之前看到在定义timestamp类型的时候有定义成timestamp、timestamp(0)或timestamp(6)几种,不是很理解后面的数字表示什么含义,于是就动手试了一下,结果如下
>>select cast(current_timestamp as timestamp) from dual;
(EXPR)
--------------------------
2017-06-19 10:13:26.540175
>>select cast(current_timestamp as timestamp(0)) from dual;
(EXPR)
-------------------
2017-06-19 10:14:03
>>select cast(current_timestamp as timestamp(6)) from dual;
(EXPR)
--------------------------
2017-06-19 10:14:25.424990
>>select cast(current_timestamp as timestamp(3)) from dual;
(EXPR)
-----------------------
2017-06-19 11:49:29.419
>>select cast(curent_timestamp as timestamp(7)) from dual;
*** ERROR[3134] The specified TIME or TIMESTAMP precision value, 7, cannot exceed 6.
*** ERROR[8822] The statement was not prepared.
于是可以得出以下结论,
- 默认的timestamp等同于timestamp(6)
- timestamp后面的数字范围为0~6
- timestamp后面的数字表示秒后面的小数位