将四位数月份年份字符串转换为 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