纠正 PostgreSQL 中的时间格式
我正在处理第三方数据,需要将其加载到我的 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;
有什么办法可以在内部转换为正确的吗?
I am working on third party data which I need to load into my postgresql database. I am running into problems where sometimes I get the time '24:00:30' when it actually should be '00:00:30'. This rejects the data.
I tried to cast but it did not work.
insert into stop_times_test trip_id, cast(arrival_time as time), feed_id, status
from external_source;
Is there any way to convert to the correct one internally?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这可能适合您的情况:
This may work for your case:
转换为间隔,然后转换为时间:
如果要使用
COPY
或批量INSERT
批量加载数据,请使目标列数据类型为interval
稍后将其转换为时间
。这是开箱即用的:Cast to interval, then cast to time:
If you want to bulk load the data with
COPY
or massINSERT
make the target column data typeinterval
and convert it totime
later. This works out of the box:不,没有什么神奇的方法可以做到这一点。没有任何演员可以帮助你。
24:00:30
是无效时间。时期。您可以尝试在 varchar 上添加该值,然后使用正则表达式更新正确的值并将它们插入到正确的列中。在进行数据转换时,这种情况经常发生。
No, there is no magic way of doing it. No cast will help you.
24:00:30
is an invalid time. Period.You could try adding that value on a varchar and then using regular expressions to update the right values and insert them on the right columns. This sort of things happen a lot when doing data transformation.