【发布时间】:2017-07-24 13:28:07
【问题描述】:
我正在将应用程序从 oracle 迁移到 postgresql。在我已经迁移的一个函数中,我将数据从不同的 oracle 数据库(oracle 中的 db 链接,postgresql 中的 oracle_fdw 扩展)从几个表复制到我的 postgresql db 中的本地表中。但是,我收到下一个错误:
NOTICE: Insert data into table from remote table : insert into IP_MAN
select * from IP_MAN_production
NOTICE: PROCEDURE copy_table : V_Step = 4 // **SQLERRM = date/time field
value out of range: "1400-02-29 00:00:00 AD"**
CONTEXT: converting column "birthday" for foreign table scan of "ip_man_production",
row 32481
当我尝试选择 oracle db 中的特定行时,我得到下一个值:
select date from bezeq.ip_manuim where
birthday=to_date('29/02/1400','dd/mm/yyyy');
birthday
--------
01010001
生日是数据类型是没有时区的时间戳。
有什么想法吗?
【问题讨论】:
-
偶然生日是不是只用月份和日期记录的,而不是用年份记录的?如果是这种情况,
UPDATE查询将他们的年份设置为 2000 可以解决您的问题,前提是月份和日期都很重要。 -
此列中的大多数值都采用 dd/mm/yyyyy 格式,但正如您所见,我提到了选择表格时得到的输出。
-
你给了我们
date字段输出,但birthdate是有问题的。 -
不不,我写了日期,但我弄错了——那天是生日
-
嗨,我更新了值并解决了我的问题。谢谢!
标签: oracle postgresql oracle-fdw