Dim*_*mpl 14 sql time date presto
在Presto SQL中,与常规SQL不同,必须使用引号括起来创建间隔:
INTERVAL '1' DAY
Run Code Online (Sandbox Code Playgroud)
而不是
INTERVAL 1 DAY
Run Code Online (Sandbox Code Playgroud)
我正在尝试生成一组日期,如下所述:https://stackoverflow.com/a/2157776/2388930,但我遇到了一个问题
INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY
Run Code Online (Sandbox Code Playgroud)
怎么可能实现这一目标?我试过了
parse((a.a + (10 * b.a) + (100 * c.a)) as varchar)
Run Code Online (Sandbox Code Playgroud)
但这没有成功.
小智 17
这不是问题的直接答案,但如果目标是复制链接的Stack Overflow问题中描述的结果,从日期范围生成天数,这里是在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)
;
Run Code Online (Sandbox Code Playgroud)
输出:
date_column
-------------
2010-01-20
2010-01-21
2010-01-22
2010-01-23
2010-01-24
Run Code Online (Sandbox Code Playgroud)
您还可以使用其他INTERVAL值DAY以及不同的步长'1'.
*改编自本期评论,https://github.com/prestodb/presto/issues/2169#issuecomment-68521569.
我最终使用date_add:
date_add('day', -(a.a + (10 * b.a) + (100 * c.a)), date_trunc('day', now()))
Run Code Online (Sandbox Code Playgroud)