Sql 从Presto中的变量生成间隔

Sql 从Presto中的变量生成间隔,sql,date,time,presto,Sql,Date,Time,Presto,在Presto SQL中,与常规SQL不同,必须使用倒逗号创建间隔: INTERVAL '1' DAY 而不是 INTERVAL 1 DAY 我正试图生成一组日期,如下所述:,但遇到以下问题: INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY 如何做到这一点?我试过了 parse((a.a + (10 * b.a) + (100 * c.a)) as varchar) 但这并不成功。我最终使用了date\u add: date_add('day'

在Presto SQL中,与常规SQL不同,必须使用倒逗号创建间隔:

INTERVAL '1' DAY
而不是

INTERVAL 1 DAY
我正试图生成一组日期,如下所述:,但遇到以下问题:

INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY
如何做到这一点?我试过了

parse((a.a + (10 * b.a) + (100 * c.a)) as varchar)

但这并不成功。

我最终使用了date\u add:

date_add('day', -(a.a + (10 * b.a) + (100 * c.a)), date_trunc('day', now()))

这不是对该问题的直接回答,但如果目标是复制链接堆栈溢出问题中描述的结果,这里有一种替代方法来生成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
除了
之外,您还可以使用其他
间隔
值以及
'1'
之外的不同步长


*根据本期评论改编

sequence
方法仅支持多达10000个元素。超过限制时返回此错误:“序列函数的结果不能超过10000个条目”