生成PostgreSQL中两个日期之间的时间序列

生成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-012008-04-01

有更好的解决方案吗?


慕婉清6462132
浏览 1845回答 3
3回答

慕无忌1623718

可以在不转换为/从int转换的情况下完成(但是转换为/从时间戳转换)SELECT date_trunc('day', dd):: dateFROM generate_series        ( '2007-02-01'::timestamp         , '2008-04-01'::timestamp        , '1 day'::interval) dd        ;

潇潇雨雨

您可以直接生成日期系列。无需使用整数或时间戳:select date::date  from generate_series(   '2004-03-07'::date,   '2004-08-16'::date,   '1 day'::interval) date;
打开App,查看更多内容
随时随地看视频慕课网APP