web-dev-qa-db-ja.com

Prestoの変数から間隔を生成

Presto SQLでは、通常のSQLとは異なり、間隔は逆コンマで作成する必要があります。

INTERVAL '1' DAY

のではなく

INTERVAL 1 DAY

ここで説明されているように、日付のセットを生成しようとしています: https://stackoverflow.com/a/2157776/23889 ですが、

INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY

これはどのように達成できますか?私は試した

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

しかし、これは成功しませんでした。

16
Dimpl

これは質問への直接の回答ではありませんが、リンクされたスタックオーバーフローの質問 日付範囲から日数を生成 で説明されている結果を再現することが目的である場合、これは一連のプレストの日付:

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 から転載。

19
wingr

私はdate_addを使用してしまいました:

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