Snowflake具有简单的功能Quarter(timestamp()),该函数返回当前季度,但想知道如何进行QTR,所有教程都参考Postgres / sql server。
目标-创建一个日期表,并显示接下来的20年中该季度的哪一天。
答案 0 :(得分:3)
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,则可以对该datadiff +1。
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
);