我尝试在snowsql中设置变量,分别指定当前年份和前几年的每个开始月和结束月的第一个。我希望代码能够滚动到新的一个月随着时间的推移。例如,因为是2020年6月,所以我们将有m2_start=2020-06-01和m2_end=2020-07-01。m1_开始=2019-06-01和m1_结束2019-07-01。这是我目前所拥有的,但由于我不知道如何在本月的第一天具体说明,我想要的东西并不安静:
设置m1\u start=(从dimdate d中选择distinct dateadd(year,-1,current\u date),其中day(d.“date”)=1);
设置m1\u end=(从dimdate d中选择distinct dateadd(month,-11,current\u date),其中day(d.“date”)=1);
设置m2_start=(从dimdate d中选择d.“date”,其中日(d.“date”)=1,月(d.“date”)=month(current_date),年(d.“date”)=year(current_date));
设置m2\u end=(从dimdate d中选择distinct dateadd(month,1,current\u date),其中day(d.“date”)=1);
设置测试='2020-06-01';
1条答案
按热度按时间ruyhziif1#
可以使用
DATE_ADD(…)
,DATE_TRUNC(…)
以及ADD_MONTHS(…)
特定于目的的日期/时间函数。我不知道如何在月初指定:
这个
DATE_TRUNC(…)
函数允许您将任何日期切碎到其任何部分的开头。当你和month
部分,它将产生一个等于月初的日期。一个简单的例子:
在上执行时的输出示例
2020-06-24
: