generate_series
函数,所以类似
\set start_date '''2019-10-01'''
\set end_date '''2019-11-07'''
SELECT current_date+AllDates.days
FROM generate_series(DATE :start_date-current_date,
DATE :end_date-current_date) AS AllDates(days);
基本上是psql 9.5文档中的一些改编代码。这可行,但是我想从简单的查询中获取start_date
和end_date
SELECT min(checkout_date)
FROM table;
和
SELECT max(checkout_date)
FROM table;
我该如何实现?有没有更好的整体方法?我确实意识到这两个小查询的主要问题是它们生成的表本身具有值而不是日期值,但是由于我对SQL还是很陌生,所以我很难理解一个人如何处理这些情况
答案 0 :(得分:1)
with my_table(checkout_date) as (
values
('2019-01-01'::date),
('2019-01-03'::date)
)
select generate_series(min(checkout_date), max(checkout_date), interval '1 day')
from my_table;
generate_series
------------------------
2019-01-01 00:00:00+01
2019-01-02 00:00:00+01
2019-01-03 00:00:00+01
(3 rows)
请注意,您需要第三个interval
参数。了解有关设置返回函数in the documentation.