2009-02-05 41 views
4

我想找到一种方法来让SELECT语句返回给定间隔的2个输入日期之间的日期集。我希望能够轻松地更改将返回的时间范围和时间间隔,因此用一系列SELECT ... UNION进行硬编码将不太理想。SQL生成一组日期

例如:我想要在最后60秒内以5秒为间隔的所有日期。

预计:

  times 
--------------------- 
2009-02-05 08:00:00 
2009-02-05 08:00:05 
2009-02-05 08:00:10 
2009-02-05 08:00:15 
2009-02-05 08:00:20 
... 
2009-02-05 08:00:55 

编辑: generate_series(...)可以代替表的使用SELECT和模拟表系列中它的数字与给定的初始值,结束值和可选步骤。从那里它可以CAST到时间函数所需的类型,并在SELECT期间进行操作。

感谢Quassnoi。

回答

4
SELECT CAST (s || ' seconds' AS INTERVAL) + TIMESTAMP 'now' 
FROM generate_series(0, -60, -5) s 
+0

TIMESTAMP算术在PostgreSQL上真的很难:) – Quassnoi 2009-02-05 17:21:05