将历元持续时间(几天)以毫秒为单位转换为时间



我正在尝试将持续时间以毫秒转换为人类可读的格式。如果低于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完全不适合存储数字;

相关内容

  • 没有找到相关文章

最新更新