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


但这并不成功。

最佳答案

这不是问题的直接答案,但是如果目标是复制链接的堆栈溢出问题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


您还可以使用除INTERVAL之外的其他DAY值和除'1'之外的其他步长。

*改编自此问题注释,https://github.com/prestodb/presto/issues/2169#issuecomment-68521569

关于sql - 从Presto中的变量生成间隔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33993096/

10-14 11:27