前言
今天下午开发妹子又在群里发问了。
"为何相同的语句可以在 Oracle中查到数据?迁移到 PostgreSQL无法查找数据啊?"
这不是很容易吗?数据肯定不一致啊,我心想道。“把 SQL发送过来看看吧!”

只见她迅速丢出一个txt文本,打开的文本是一段长达200行 SQL代码。那时候我就懵逼了,这要查数据不一致,真的要查很久啊。
定位问题
我随便截屏一下,一整个页面都截不完啊。

面临这种 SQL时,只能进行拆分。就是一块一块的拆开,然后检查拆开的 SQL。目前看来没有其他比较好的办法。一层一层地剥下去,就像俄罗斯的套娃一样。终于拨到其中的一层发现了一个问题。

在这里,我在 PG中查询0条数据,在 Oracle中查询是58条数据。所以问题出在哪里呢?事实上,错误的地方在to_date这里。

请注意,该表的字段 crtime为 timestamp类型。在查看一下to_date函数,您可以找到两个函数。红色框是PostgreSQL内置的to_date函数,并返回 date类型。

在 PostgreSQL中, date类型与 Oracle的Date类型不一致,它不带时分秒。因此,当我们从 Oracle迁移到 PostgreSQL为了兼容,将使用 timetamp类型进行转换,因此表上的 crtime是 timestamp类型。

问题的解决也很简单,使用第三方插件提供的to_date函数,返回 timestamp类型就是 ok。如图所示使用亚马逊的工具包aws_oracle_ext下的to_date就可以解决这个问题,也可以使用 orafce插件下的to_date。

后记
"妹子,问题找到了,就是眼睛看花了。"

文章转载自励志成为PostgreSQL大神,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
489次阅读
2025-04-21 16:58:09
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
357次阅读
2025-04-11 10:43:23
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
337次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
309次阅读
2025-04-07 12:14:29
postgresql+patroni+etcd高可用安装
necessary
172次阅读
2025-03-28 10:11:23
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
152次阅读
2025-04-14 15:58:34
墨天轮PostgreSQL认证证书快递已发(2025年3月批)
墨天轮小教习
130次阅读
2025-04-03 11:43:25
SQL 优化之 OR 子句改写
xiongcc
95次阅读
2025-04-21 00:08:06
融合Redis缓存的PostgreSQL高可用架构
梧桐
90次阅读
2025-04-08 06:35:40
PostgreSQL拓展PGQ实现解析
chirpyli
87次阅读
2025-04-07 11:23:17