一、语法:
sequence(start, stop, step)
比如:
> SELECT sequence(1, 5);
[1,2,3,4,5]
> SELECT sequence(5, 1);
[5,4,3,2,1]
> SELECT sequence(to_date('2018-01-01'), to_date('2018-03-01'), interval 1 month);
[2018-01-01,2018-02-01,2018-03-01]
> SELECT sequence(to_date('2018-01-01'), to_date('2018-03-01'), interval '0-1' year to month);
[2018-01-01,2018-02-01,2018-03-01]
二、具体使用场景及注意事项
1、使用场景:
sequence后面的日期,第一个是开始日期,第二个是结束日期,后面是步长,开始日期在结束日期前面,那么步长就是正数,比如:sequence([开始日期],[结束日期],interval 1 month)
结果如下:
下一步需要用explode函数将日期显示出来:explode([sequence])
结果如下:
二、常见报错及解决方法:
1、步长正负写错了,或者开始日期和结束日期写错了,那么就会出现这种报错:
2、步长和日期的顺序都是对的,但是就是报错:
这种情况下可能是因为在实际使用过程中,出现了脏数据,使得开始日期和结束日期并不是始终是开始日期小于等于结束日期,会有交叉日期的出现,此时,可能就会报如下的错:
检查下原数据,发现有一条记录是开始日期大于结束日期的:
解决方法是通过筛选,把脏数据过滤掉:
此时,数据就正常了: