Снежинка - посчитать день квартала - PullRequest
1 голос
/ 29 октября 2019

Snowflake имеет простую функцию Quarter (timestamp ()), которая возвращает текущий квартал, но интересно, как сделать день QTR, все учебники ссылаются на сервер Postgres / sql.

Цель - создать таблицу дат и показать, какой это день квартала в течение следующих 20 лет.

1 Ответ

3 голосов
/ 29 октября 2019
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 к этому номеру.

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
    );
...