PostgreSQL-查询以数字乘以时间

时间:2018-10-26 09:56:47

标签: sql postgresql datetime

我正在创建将时间乘以数字的查询。

时间是查询一个人的年度工作时间的结果。目的是计算25%,然后我想将时间乘以0.25

示例:

Time1: 100:00:00

[格式H:M:s]

为此,我尝试了以下查询:

SELECT '100:00:00'::time * 0.25

PostgreSQL返回:

ERROR: the time / date value is out of range: «100: 00: 00»
LINE 2: SELECT '100: 00: 00' :: time * 0.25

错误已清除。我的时间转换超出范围,因为时间对象仅在24小时内有效。在这种情况下可以正常工作:

SELECT '24:00:00'::time * 0.25

结果:

"06:00:00"

有人有主意吗?

2 个答案:

答案 0 :(得分:0)

时间值限制为24小时。您可以使用其他单位进行计算。例如,以下代码将其转换为秒:

select 0.25 * ( (string_to_array('100:00:00', ':'))[1]::int*60*60 +
                (string_to_array('100:00:00', ':'))[2]::int*60 +
                (string_to_array('100:00:00', ':'))[3]::int
              ) as num_seconds

请注意,您也不能将结果表示为时间

答案 1 :(得分:0)

您可以使用INTERVAL,如下所示:

select interval '100 hours 0 minutes 0 seconds' * 0.25

或:

select interval '100:00:00' * 0.25

或:

select '100:00:00'::interval * 0.25

结果(针对所有人):

 ?column?
 --------
 25:00:00