有没有办法将 yyyy/mm varchar 数据转换为雪花中的日期格式? [重复]

问题描述 投票:0回答:2

如何将 yyyy/dd 类型列转换为每月排序的日期。所以,我需要将雪花中的季度格式转换为月度格式。

例如:我有一个像 2021/03 这样的列数据,我必须将此列数据转换为这样的 2021/01、2021/02、2021/03。

如果是2021/06,我们需要将其转换为2021/04、2021/05、2021/06。

sql logic snowflake-cloud-data-platform
2个回答
1
投票
select TO_DATE(date_column, 'YYYY/MM')

1
投票

在您的环境中使用日历表来处理像这样的更复杂的日期转换可能会有所帮助。下面的 CTE 是该表的示例。下面的 SELECT 语句将格式为

YYYY/QQ
of
'2021/03'
的字符串日期转换为
YYYY/MM

WITH calendar AS
(
    SELECT 
        dateadd('DAY', seq4(), '2000-01-01'::DATE) as calendar_date,
        MONTH(calendar_date) as month_of_year,
        QUARTER(calendar_date) as quarter_of_year,
        YEAR(calendar_date) as year_of_calendar,
        DAY(calendar_date) as day_of_month,
        WEEK(calendar_date) as week_of_year
    FROM table(generator(rowcount => 365*50))
)
SELECT DISTINCT '2021/03' as YYYYQQ_date,
   year_of_calendar || '/' || LPAD(month_of_year, 2, '0') as YYYYMM
FROM calendar 
WHERE year_of_calendar = strtok(YYYYQQ_date, '/', 1) 
    AND quarter_of_year = strtok(YYYYQQ_date, '/', 2);

2021/07
2021/08
2021/09

这只是将 yyyy/qq 转换为该季度的多个 yyyy/mm 输出的示例,但相同的逻辑可以应用于任何日期部分转换,并且可以自定义日历表以保存甚至组织特定的日期内容,例如 oddball财务周期、公司假日标志或工作日标志(作为示例)。

© www.soinside.com 2019 - 2024. All rights reserved.