SQL:创建一个包含24小时行的表

时间:2014-08-12 10:02:48

标签: sql postgresql time

在PostreSQL中,创建一个包含日期和当前小时的时间戳相当容易:

vioozer=> SELECT to_char(NOW(), 'YYYY-MM-DD HH24:00');
     to_char
------------------
 2014-08-12 12:00
(1 row)

前一小时可以使用NOW()-interval '1 hour'显示:

vioozer=> SELECT to_char(NOW()-interval '1 hour', 'YYYY-MM-DD HH24:00');
     to_char
------------------
 2014-08-12 11:00
(1 row)

有没有办法在过去24小时内轻松生成包含24列的表格,a-la:

vioozer=> SELECT MAGIC_FROM_STACK_OVERFLOW();
     to_char
------------------
 2014-08-12 12:00
 2014-08-12 11:00
 2014-08-12 10:00
 ...
 2014-08-11 13:00
(24 row)

1 个答案:

答案 0 :(得分:8)

使用generate_series()

select i
from generate_series(current_timestamp - interval '24' hour, current_timestamp, interval '1' hour) i