【发布时间】:2018-08-07 20:41:31
【问题描述】:
我想创建一个表格,其中包含开始日期和结束日期之间的所有日期。如果不在插入中列出每个日期,最好的方法是什么?
例如:开始日期是 2018 年 1 月 1 日,结束日期是 2018 年 1 月 4 日,那么结果表应该是:
date
------
1/1/2018
1/2/2018
1/3/2018
1/4/2018
【问题讨论】:
我想创建一个表格,其中包含开始日期和结束日期之间的所有日期。如果不在插入中列出每个日期,最好的方法是什么?
例如:开始日期是 2018 年 1 月 1 日,结束日期是 2018 年 1 月 4 日,那么结果表应该是:
date
------
1/1/2018
1/2/2018
1/3/2018
1/4/2018
【问题讨论】:
您可以使用sequence(date, date) 生成范围内的日期:
presto:default> create table dates as
select x from unnest(sequence(date '2018-01-01', date '2018-01-04')) t(x);
...
presto:default> select * from dates;
x
------------
2018-01-01
2018-01-02
2018-01-03
2018-01-04
(4 rows)
注意:sequence 与 dates 一起使用,因为 Presto 版本 0.197。
【讨论】:
您是否考虑过使用类似的东西:
INSERT INTO your_table
SELECT ...
FROM ...
WHERE date_column BETWEEN DATE '2001-01-01' AND DATE '2018-04-01'
请参阅文档中的以下位:
【讨论】: