【问题标题】:How to round date to closest month?如何将日期舍入到最近的月份?
【发布时间】:2022-10-13 11:36:14
【问题描述】:

我需要将日期四舍五入到最近的月份开始。例如,我希望 2022-08-30 和 2022-09-03 都评估为 2022-09-01。

如何使用 Snowflake SQL 做到这一点?

【问题讨论】:

    标签: sql date snowflake-cloud-data-platform


    【解决方案1】:

    我们可以将此逻辑封装到 SQL UDF 中:

    create or replace function round_to_month(d date)
    returns date
    as $$
    select x 
    from (
        select date_trunc(month, d) before
            , dateadd(month, 1, before) after      
            , iff(d-before < after-d, before, after) x
    )
    $$
    

    样本:

    
    with data(d) as (
        select $1::date
        from values('2020-01-10'), ('2020-01-20'), ('2020-01-16'), ('2020-01-17')
    )
    
    select *, round_to_month(d)
    from data
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 2015-02-04
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多