如何在 Snowflake 中创建月份范围?
How to create months range in Snowflake?
我想创建从开始日期的月份到当前月份的月份范围。
下面我为开始和结束时间戳设置了一个变量。
我的查询没有 return 期间的开始月份,即 2017-09-01 00:00:00.000
。我怎样才能让它发挥作用?
SET sbf_num_months_1 = (SELECT datediff(month, DATE_TRUNC('month', '2017-09-01'::date), DATE_TRUNC('month', CURRENT_DATE)));
SELECT
dateadd(
month,
'-' || row_number() over (order by null),
dateadd(month, 1, DATE_TRUNC('month', CURRENT_DATE))
)::timestamp AS month
FROM table (generator(rowcount => ($sbf_num_months_1)))
您的行数需要加 1。从逻辑上考虑,如果你想要这个月和上个月的月份范围,如果你减去这 2 个月,你会得到 1。但是,你想要生成 2 条记录,所以你需要在 rowcount 中加 1 .
此外,这可能更容易 select:
SELECT dateadd(month,-seq8(0), DATE_TRUNC('month', CURRENT_DATE))::timestamp AS month
FROM table (generator(rowcount => ($sbf_num_months_1)+1))
我想创建从开始日期的月份到当前月份的月份范围。 下面我为开始和结束时间戳设置了一个变量。
我的查询没有 return 期间的开始月份,即 2017-09-01 00:00:00.000
。我怎样才能让它发挥作用?
SET sbf_num_months_1 = (SELECT datediff(month, DATE_TRUNC('month', '2017-09-01'::date), DATE_TRUNC('month', CURRENT_DATE)));
SELECT
dateadd(
month,
'-' || row_number() over (order by null),
dateadd(month, 1, DATE_TRUNC('month', CURRENT_DATE))
)::timestamp AS month
FROM table (generator(rowcount => ($sbf_num_months_1)))
您的行数需要加 1。从逻辑上考虑,如果你想要这个月和上个月的月份范围,如果你减去这 2 个月,你会得到 1。但是,你想要生成 2 条记录,所以你需要在 rowcount 中加 1 .
此外,这可能更容易 select:
SELECT dateadd(month,-seq8(0), DATE_TRUNC('month', CURRENT_DATE))::timestamp AS month
FROM table (generator(rowcount => ($sbf_num_months_1)+1))