如何在 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))