将四位数月份年份字符串转换为 Snowflake 中的日期
Converting a four digit month year string to date in Snowflake
所以我有一些数据如下:
data
1203
0323
0101
1005
1130
0226
所以在任何情况下,前两位数字是月份,后两位数字是年份。无论如何,有没有办法轻松地将这些映射到日期,而不用直接查找 table?
这就是我要找的东西
data date
1203 12/01/2003
0323 03/01/2023
0101 01/01/2001
1005 10/01/2005
1130 11/01/2030
0226 02/01/2026
在任何情况下,我都希望这一天是该月的第一天。
我们可以尝试构建一个包含年月日组件的有效日期字符串,然后使用 TO_DATE
函数将其转换为真正的日期:
WITH cte AS (
SELECT '1203' AS dt
)
SELECT dt, TO_DATE(CONCAT('01', dt), 'DDMMYY') AS dt_out
FROM cte;
与蒂姆的回答大致相同:
您想从数字转换为文本(如果您的数据是文本,请跳过它,但如果它是变体(来自 JSON 或 XML),您仍然需要转换为文本),然后用 TO_DATE as MM month, YY year in 2 column (format tokens) 解析。你会得到每个月的第一个
SELECT
column1,
to_date(column1::text, 'MMYY')
FROM VALUES
(1203),
(0323),
(0101),
(1005),
(1130),
(0226);
给予:
COLUMN1
TO_DATE(COLUMN1::TEXT, 'MMYY')
1203
2003-12-01
323
2023-03-01
101
2001-10-01
1005
2005-10-01
1130
2030-11-01
226
2026-02-01
所以我有一些数据如下:
data
1203
0323
0101
1005
1130
0226
所以在任何情况下,前两位数字是月份,后两位数字是年份。无论如何,有没有办法轻松地将这些映射到日期,而不用直接查找 table?
这就是我要找的东西
data date
1203 12/01/2003
0323 03/01/2023
0101 01/01/2001
1005 10/01/2005
1130 11/01/2030
0226 02/01/2026
在任何情况下,我都希望这一天是该月的第一天。
我们可以尝试构建一个包含年月日组件的有效日期字符串,然后使用 TO_DATE
函数将其转换为真正的日期:
WITH cte AS (
SELECT '1203' AS dt
)
SELECT dt, TO_DATE(CONCAT('01', dt), 'DDMMYY') AS dt_out
FROM cte;
与蒂姆的回答大致相同:
您想从数字转换为文本(如果您的数据是文本,请跳过它,但如果它是变体(来自 JSON 或 XML),您仍然需要转换为文本),然后用 TO_DATE as MM month, YY year in 2 column (format tokens) 解析。你会得到每个月的第一个
SELECT
column1,
to_date(column1::text, 'MMYY')
FROM VALUES
(1203),
(0323),
(0101),
(1005),
(1130),
(0226);
给予:
COLUMN1 | TO_DATE(COLUMN1::TEXT, 'MMYY') |
---|---|
1203 | 2003-12-01 |
323 | 2023-03-01 |
101 | 2001-10-01 |
1005 | 2005-10-01 |
1130 | 2030-11-01 |
226 | 2026-02-01 |