这段时间在做数据库兼容的测试,把mysql迁移道达梦数据库,然后又从达梦迁移到oracle数据库,搞得头都大了。。。。在迁移的过程中遇到一个时间类型问题:
mysql的timestamp字段默认值设置为current_timestamp类型,这个类型在这个数据库之间迁移,报了精度超出范围,查看了阿里的OceanBase的current_timestamp函数详解,对精度的解释如下,参考着能够解决这个问题,记录如下:
CURRENT_TIMESTAMP
函数返回 TIMESTAMP WITH TIME ZONE
数据类型的当前会话时区中的当前日期,返回值中包含当前的时区信息。
语法:
CURRENT_TIMESTAMP (precision)
参数:
参数 | 说明 |
---|---|
precision | 表示秒小数位的精度,默认值为 6,取值范围 0~9。 |
返回类型:
包含当前的时区信息的 TIMESTAMP WITH TIME ZONE
数据类型。
示例
此示例显示了不同会话时区使用 CURRENT_TIMESTAMP
函数所得的结果。
设置当前时区至 GMT-5 时区:
ALTER SESSION SET TIME_ZONE = '-05:00';
执行以下语句调用函数:
SELECT CURRENT_TIMESTAMP FROM DUAL;
查询结果如下:
+------------------------------------+
| CURRENT_TIMESTAMP |
+------------------------------------+
| 2020-03-08 01:49:31.219066 -05:00 |
+------------------------------------+
切换当前时区至 GMT+8 时区,且调整秒的小数位精度为 3:
ALTER SESSION SET TIME_ZONE = '+08:00';
执行以下语句调用函数:
SELECT CURRENT_TIMESTAMP(3) FROM DUAL;
查询结果如下:
+---------------------------------+
| CURRENT_TIMESTAMP(3) |
+---------------------------------+
| 2020-03-08 14:50:32.499 +08:00 |
+---------------------------------+