我有一个表格,其中存在一个区间类型的列 Duration
。目前这些值以 HH:MM:SS
的形式表示,数据如下:
15:32:00
17:01:00
16:02:00
...
问题在于实际数据仅涉及分钟和秒钟,列的值应该更新,使得数值变为:
15:32:00 -> 00:15:32
17:01:00 -> 00:17:01
16:02:00 -> 00:16:02
...
什么样的查询才能针对该列运行?
我有一个表格,其中存在一个区间类型的列 Duration
。目前这些值以 HH:MM:SS
的形式表示,数据如下:
15:32:00
17:01:00
16:02:00
...
15:32:00 -> 00:15:32
17:01:00 -> 00:17:01
16:02:00 -> 00:16:02
...
SELECT EXTRACT(hour FROM duration) * INTERVAL '1' minute + EXTRACT(minute FROM duration) * INTERVAL '1' second
FROM tbl
;
这是我的原始答案,没有回答原来的问题:
你可以尝试类似这样的东西:
SELECT duration - EXTRACT(hour FROM duration) * INTERVAL '1' hour
FROM tbl
;
该语句从间隔中提取小时部分并将其从原始值中减去。如果您确实需要更新数据,请改写为UPDATE
。
extract(hour from duration) * INTERVAL '1' hour)
以提高可读性。顺便说一下。 - Craig Ringer