Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql:“;抵销;从HH:MM:SS到00:HH:MM的间隔_Sql_Postgresql_Intervals_Time Format - Fatal编程技术网

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”小时)
,以提高可读性,顺便说一句。这只需要几个小时。需要实现的是,原来的小时变成新的分钟,原来的分钟变成新的秒。但这个答案给了我一个很好的线索,告诉我如何解决这个问题,我将把它作为我自己的答案发布。