我正在尝试将持续时间以毫秒转换为人类可读的格式。如果低于24小时,它可以正常工作,但一旦超过该值,它就会从0重新开始。有可能在超过一天的限制后保留时间吗?
我当前的代码实现(在Postgres中)包含以下内容:
create table test (time_unix text);
insert into test values ('7200000'); --2h
insert into test values ('28800000'); --8h
insert into test values ('1800000'); -- 30min
insert into test values ('252000000'); -- 70h
insert into test values ('86400000') -- 24h
select (timestamp 'epoch' + time_unix::bigint* interval '1 ms')::time
from test;
当前输出:
time
02:00:00
08:00:00
00:30:00
22:00:00
00:00:00
所需输出:
time
02:00:00
08:00:00
00:30:00
70:00:00
24:00:00
如a_horse_with_no_name所述,数据类型time
表示"时间点"。而不是持续时间。因此70h不能用time
值表示(最大的时间值为24:00:00
)。您可能希望将其转换为interval
:
SELECT time_unix::bigint * INTERVAL '1 ms' FROM test;
?column?
══════════
02:00:00
08:00:00
00:30:00
70:00:00
24:00:00
(5 rows)
数据类型text
完全不适合存储数字;