oracle 到 postgres,插入时 DATE 字段出错
Posted
技术标签:
【中文标题】oracle 到 postgres,插入时 DATE 字段出错【英文标题】:oracle to postgres, DATE field is in error while inserting 【发布时间】:2018-04-04 03:43:00 【问题描述】:INSERT INTO ASSOCIATE_MERCHANT_INFO(start_date,end_date)
VALUES ('0002-05-05 00:00:00.0',NULL)
结果:
Caused by: org.postgresql.util.PSQLException:
ERROR: column "start_date" is of type timestamp without time zone but
expression is of type character varying
[junit] Hint: You will need to rewrite or cast the expression.
我可以在这里看到 '0002-05-05 00:00:00.0'
被 postgres 查询视为 char。
我尝试对选择查询进行类型化,但未能成功。
在提取数据时,我尝试在下面对该日期(start_date)字段进行类型转换,如下所示:
select cast(start_date as timestamp) as start_date
select TO_TIMESTAMP(start_date) as start_date
select TO_DATE(TO_CHAR(end_date, 'YYYY/MM/DD HH:MI:SS'), 'YYYY/MM/DD HH:MI:SS') as start_date
有什么提示吗?
【问题讨论】:
为什么你认为转换查询的列会影响插入语句?你明白错误信息吗? 【参考方案1】:您是否尝试在插入时将其转换为 TIMESTAMP
?
INSERT INTO associate_merchant_info
(start_date,
end_date)
VALUES ('0002-05-05 00:00:00.0' :: TIMESTAMP,
NULL);
【讨论】:
考希克,感谢您的回复。我正在运行选择查询,然后使用外部工具插入。我无法修改插入查询。我试图通过在选择查询本身中连接时间戳来获得类似的输出,但它的输出类似于 '0002-05-05 00:00:00.0 :: TIMESTAMP' 而不是 '0002-05-05 00:00:00.0' :: TIMESTAMP @Jay : 请显示您尝试获取该输出的选择查询 @Jay 请将此评论的信息合并到您的帖子中。没有人能猜到你不能修改插入语句。【参考方案2】:INSERT INTO ASSOCIATE_MERCHANT_INFO(start_date,end_date)
VALUES (to_timestamp('0002-05-05 00:00:00.0', 'YYYY-MM-DD HH24:MI:SS.MS'),NULL);
【讨论】:
以上是关于oracle 到 postgres,插入时 DATE 字段出错的主要内容,如果未能解决你的问题,请参考以下文章
播放 Anorm 将 scala 列表插入到 postgres 文本数组列中
在我的 PostGres 表上授予所有权限,但在尝试插入/选择时仍然收到“权限被拒绝”错误