PostgreSQL: 将 HH:MM:SS 的"偏移量"转换为 00:HH:MM。

4

我有一个表格,其中存在一个区间类型的列 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

...

什么样的查询才能针对该列运行?

列的数据类型是什么? - Joe G Joseph
1个回答

4
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
这只是剥离了小时。需要实现的是原始小时变成新的分钟,原始分钟变成新的秒钟。但是这个答案给了我一个很好的线索来解决问题,我会将其作为自己的答案发布。 - KLaine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接