在PostgreSQL中纠正时间格式

时间:2011-10-21 17:57:12

标签: postgresql casting timestamp

我正在处理需要加载到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;

有没有办法在内部转换为正确的?

3 个答案:

答案 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上添加该值,然后使用正则表达式更新正确的值并将它们插入到右侧列中。这种事情在进行数据转换时会发生很多