加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle的Timestamp数据类型与Mysql的Timestamp数据类型兼容的经

发布时间:2020-12-12 15:15:56 所属栏目:百科 来源:网络整理
导读:oracle: select cast(sysdate as timestamp) from DUAL select CURRENT_TIMESTAMP from dual mysql; select CURRENT_TIMESTAMP from dual 在MySQL上开发的应用程序,在向Oracle做程序兼容的时候,遇到了一个小麻烦,其他类型的数据都还好办,总能找到替代办

oracle: select cast(sysdate as timestamp) from DUAL

select CURRENT_TIMESTAMP from dual

mysql; select CURRENT_TIMESTAMP from dual

在MySQL上开发的应用程序,在向Oracle做程序兼容的时候,遇到了一个小麻烦,其他类型的数据都还好办,总能找到替代办法,做到不改动SQL文就可以兼容,但在对Timestamp类型的兼容时,却遇到了一个让我有点心跳的小问题:Oracle的Timestamp数据类型插入数据的时候好像不太方便。

由于应用程序是用Java写的,在执行对Mysql的写入时用到的是从Mysql的内置函数CURRENT_TIMESTAMP()中取值,在Oracle中,却没好到这个函数,这样一来,如果要兼容Oracle,就要修改应用程序了。麻烦大了,已经部署了的应用程序。如何是好?

在Oracle 的文档中翻阅相关部分,终于一丝丝惊喜展现出来,有救!

Oracle有一个属性是针对Timestamp数据类型的,那就是CURRENT_TIMESTAMP。虽然不是一个可直接使用的函数,但我确信这是可以解决问题的关键。因为Mysql中有一个全局参数CURRENT_TIMESTAMP,对应的正式CURRENT_TIMESTAMP()函数。

OK。解决方法找到,分别在Mysql与Oracle中创建触发器执行timestamp的写入,而写入方式是用CURRENT_TIMESTAMP全局函数替代CRRENT_TIMESTAMP()函数。这样就可以用痛一条SQL文"insert into test_table values (CURRENT_TIMESTAMP)"写入时间戳了。

投机取巧的一个小点子,把问题解决。

这里是要提醒自己,很多时候,一些看似微小的线索往往是解决重大问题的银弹。只要找到,便可以消灭不死的吸血鬼。

附加一点,对Oracle写入Timestamp类型的值,可以使用以下三种方式:

1.ISNERT INTO TEST_TABLE VALUES (TO_CHAR('2009-02-02 12:12:12','yyyy-mm-dd hh24:mi:ss'))

2.ISNERT INTO TEST_TABLE VALUES (CURRENT_TIMESTAMP),
3.ISNERT INTO TEST_TABLE VALUES (SYSTIMESTAMP),

然而,若提前考虑到对多种数据库的兼容,最好用第二种,因为CURRENT_TIMESTAMP在多种数据库中均有内置。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读