首页 > 解决方案 > 雪花 - 计算季度的一天

问题描述

Snowflake 有一个简单的函数 Quarter(timestamp()) ,它返回当前季度,但想知道如何做 QTR 的一天,所有教程都参考 Postgres/sql server。

目标 - 创建一个日期表,并显示下一个 20 年季度中的哪一天。

标签: snowflake-cloud-data-platform

解决方案


SELECT column1::timestamp as d,
    DATE_TRUNC('QUARTER',d) as q,
    DATEDIFF('day',q, d) as doq
FROM VALUES ('2019-10-30'),('2019-10-01');

在季度的第一天给出 0,所以如果你需要它是 1,你可以 +1 那个 datadiff。

D                         Q                         DOQ
2019-10-30 00:00:00.000   2019-10-01 00:00:00.000   29
2019-10-01 00:00:00.000   2019-10-01 00:00:00.000   0 

[编辑:] 在重新阅读了 20 年表的目标之后,这是我过去在雪花中使用的一些代码:

CREATE OR REPLACE TABLE twenty_years_of_days(date) AS
    SELECT DATEADD(day, rn, CURRENT_DATE) as date,
          DATE_TRUNC('QUARTER',date) as quarter,
          DATEDIFF('day',quarter, date) as doq
    FROM (
        SELECT row_number() over(order by 1) as rn
        FROM TABLE(GENERATOR(rowCount => 365*20)) v
    );

推荐阅读