0

给定下表存储变量的值变化:

Timestamp    Value
13:14        12
14:25        33
15:13        24
15:41        48
16:31        54
17:00        63
19:30        82
22:30        13

我需要构建一个输出以下内容的查询:

Timestamp    Value
14:00        12
15:00        33
16:00        48
17:00        63
18:00        63
19:00        63
20:00        82
21:00        82
22:00        82
23:00        13
And so on...

实现所需输出的正确方法是什么?

提前致谢。

4

1 回答 1

0

使用 date_trunc() 和日期/时间运算符

综述示例

user=# select datetime from tbl_test limit 1;
        datetime
------------------------
 2013-07-26 15:36:00+09
(1 row)

user=# select date_trunc('hour', datetime) + interval '1 hour'
       from tbl_test limit 1
        ?column?
------------------------
 2013-07-26 16:00:00+09
(1 row)

格式化示例

user=# select to_char(date_trunc('hour', datetime) + interval '1 hour', 'HH24:MI')
              from tbl_test limit 1;
 to_char
---------
 16:00
(1 row)

更新:您可以使用窗口功能选择最新的。

SELECT DISTINCT x.timestamp, last_value(x.value) OVER (PARTITION BY x.timestamp)
FROM (SELECT TO_CHAR(date_trunc('hour', timestamp) + INTERVAL '1 hour', 'HH24:MI') AS timestamp, value 
      FROM tbl_test) as x
ORDER BY x.timestamp;

PostgreSQL参考:

  1. 9.9。日期/时间函数和运算符
  2. 9.8。数据类型格式化函数
于 2013-10-17T03:48:08.603 回答