在Presto sql中,与常规sql不同,必须使用引号括起来创建间隔:
INTERVAL '1' DAY
而不是
INTERVAL 1 DAY
我正在尝试生成一组日期,如下所述:https://stackoverflow.com/a/2157776/2388930,但遇到问题
INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY
怎么可能实现这一目标?我试过了
parse((a.a + (10 * b.a) + (100 * c.a)) as varchar)
但这没有成功.
解决方法
这不是问题的直接答案,但如果目标是复制链接的Stack Overflow问题
generate days from date range中描述的结果,这里是在Presto中生成日期序列的另一种方法:
SELECT CAST(date_column AS DATE) date_column FROM (VALUES (SEQUENCE(FROM_ISO8601_DATE('2010-01-20'),FROM_ISO8601_DATE('2010-01-24'),INTERVAL '1' DAY) ) ) AS t1(date_array) CROSS JOIN UNNEST(date_array) AS t2(date_column) ;
输出:
date_column ------------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24
您还可以使用除DAY之外的其他INTERVAL值以及除“1”之外的不同步长.
*改编自本期评论,https://github.com/prestodb/presto/issues/2169#issuecomment-68521569.