Oracle的Timestamp数据类型与Mysql的Timestamp数据类型兼容的经验
来源:互联网 发布:单片机输出电压 编辑:程序博客网 时间:2024/06/05 09:00
在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在多种数据库中均有内置。
- Oracle的Timestamp数据类型与Mysql的Timestamp数据类型兼容的经验
- Oracle的Timestamp数据类型与Mysql的Timestamp数据类型兼容的经验
- Oracle的Timestamp数据类型与Mysql的Timestamp数据类型兼容的经验
- SqlServer的 timestamp数据类型
- MySQL数据库的数据类型timestamp的自动更新
- ORACLE -- DATE和TIMESTAMP数据类型的比较
- ORACLE DATE和TIMESTAMP数据类型的比较
- ORACLE DATE和TIMESTAMP数据类型的比较
- ORACLE DATE和TIMESTAMP数据类型的比较
- ORACLE 数据类型DATE和TIMESTAMP的比较
- ORACLE DATE和TIMESTAMP数据类型的比较
- Oracle DATE和TIMESTAMP数据类型的比较
- ORACLE DATE和TIMESTAMP数据类型的比较
- ORACLE DATE和timestamp数据类型的比较
- MySQL中timestamp数据类型的特点
- MYSQL-TIMESTAMP数据类型的默认值与自动更新问题
- ORACLE DATE和TIMESTAMP数据类型的比较(一)
- ORACLE DATE和TIMESTAMP数据类型的比较(二)
- 伪代码编程过程
- 设备驱动外传 - 触摸屏的校正原理
- RTTI in C++
- K9F1G08驱动程序
- 创建分区和文件系统、虚拟文件系统,Swap区——Redhat
- Oracle的Timestamp数据类型与Mysql的Timestamp数据类型兼容的经验
- GCC使用详情
- 说说代码之美
- 避免键盘弹出时遮挡输入框
- iPhone程序调用系统通讯录选择单个电话号码
- 精简String和Array
- grub2 1.95 源码分析之一 —— boot.S 分析及注释
- 一个一个解决掉所有难点
- 无线安全问题不可小视