我正在处理需要加载到postgresql数据库中的第三方数据。我遇到了问题,有时我得到时间'24:00:30',实际应该是'00:00:30'。这会拒绝数据。
我试图施放,但它没有用。
insert into stop_times_test trip_id, cast(arrival_time as time), feed_id, status
from external_source;
有没有办法在内部转换为正确的?
答案 0 :(得分:3)
这可能适用于您的情况:
> select '0:0:0'::time + '24:00:30'::interval;
00:00:30
答案 1 :(得分:1)
施放到间隔,然后施放到时间:
SELECT '24:00:30'::interval::time
如果您要使用COPY
或质量INSERT
批量加载数据,请将目标列数据类型interval
并稍后将其转换为time
。这开箱即用:
ALTER TABLE mytable ALTER col1 TYPE time;
答案 2 :(得分:0)
不,没有神奇的方法可以做到这一点。没有演员会帮助你。 24:00:30
是无效的时间。周期。
您可以尝试在varchar上添加该值,然后使用正则表达式更新正确的值并将它们插入到右侧列中。这种事情在进行数据转换时会发生很多。