我正在创建将时间乘以数字的查询。
时间是查询一个人的年度工作时间的结果。目的是计算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"
有人有主意吗?
答案 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