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

Ada*_*tan 2 sql postgresql time

在PostreSQL中,使用日期和当前小时创建时间戳相当容易:

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

前一小时可以使用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)
Run Code Online (Sandbox Code Playgroud)

有没有办法在过去的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)
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 8

使用 generate_series()

select i
from generate_series(current_timestamp - interval '24' hour, current_timestamp, interval '1' hour) i
Run Code Online (Sandbox Code Playgroud)