Postgresql:“;抵销;从HH:MM:SS到00:HH:MM的间隔
我有一个表,其中存在一个间隔类型列Postgresql:“;抵销;从HH:MM:SS到00:HH:MM的间隔,sql,postgresql,intervals,time-format,Sql,Postgresql,Intervals,Time Format,我有一个表,其中存在一个间隔类型列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
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(从持续时间开始的小时数)*间隔“1”小时)
,以提高可读性,顺便说一句。这只需要几个小时。需要实现的是,原来的小时变成新的分钟,原来的分钟变成新的秒。但这个答案给了我一个很好的线索,告诉我如何解决这个问题,我将把它作为我自己的答案发布。