生成PostgreSQL中两个日期之间的时间序列我有这样的查询,很好地生成两个给定日期之间的一系列日期:select date '2004-03-07' + j - i as AllDate
from generate_series(0, extract(doy from date '2004-03-07')::int - 1) as i,
generate_series(0, extract(doy from date '2004-08-16')::int - 1) as j它在2004-03-07和之间生成162个日期2004-08-16,这就是我想要的。这段代码的问题是,它不会得到正确的答案时,这两个日期都不同年份,例如,当我尝试2007-02-01和2008-04-01。有更好的解决方案吗?
3 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
可以在不转换为/从int转换的情况下完成(但是转换为/从时间戳转换)
SELECT date_trunc('day', dd):: date
FROM generate_series
( '2007-02-01'::timestamp
, '2008-04-01'::timestamp
, '1 day'::interval) dd
;
潇潇雨雨
TA贡献1833条经验 获得超4个赞
您可以直接生成日期系列。无需使用整数或时间戳:
select date::date from generate_series( '2004-03-07'::date, '2004-08-16'::date, '1 day'::interval) date;
添加回答
举报
0/150
提交
取消