【问题标题】:Postgresql: "Offset" Interval from HH:MM:SS to 00:HH:MMPostgresql:从 HH:MM:SS 到 00:HH:MM 的“偏移”间隔
【发布时间】:2012-08-30 23:01:49
【问题描述】:

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

...

应该对列运行什么样的查询?

【问题讨论】:

  • 列的数据类型是什么?

标签: sql postgresql intervals time-format


【解决方案1】:
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) 以获得更好的可读性,顺便说一句。
  • 这只是几个小时的时间。需要实现的是原来的小时变成了新的分钟,原来的分钟变成了新的秒。但是这个引导的答案给了我一个很好的线索,让我知道如何解决这个问题,我会把它作为自己的答案发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 2014-08-11
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多