为了账号安全,请及时绑定邮箱和手机立即绑定

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

生成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-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

        ;


查看完整回答
反对 回复 2019-08-27
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您可以直接生成日期系列。无需使用整数或时间戳:

select date::date 
from generate_series(
  '2004-03-07'::date,
  '2004-08-16'::date,
  '1 day'::interval) date;


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 1837 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信