Oracle时间戳数据types
不带参数的时间戳数据types和参数0有什么不同?
timestamp
VS timestamp(0)
括号中的数字指定要存储的小数秒的精度。 所以, (0)
将意味着不存储任何一秒的一小部分,并且只使用整秒。 未指定的默认值是小数点后6位数字。
所以一个未指定的值将存储一个date,如:
TIMESTAMP 24-JAN-2012 08.00.05.993847 AM
并指定(0)
只存储:
TIMESTAMP(0) 24-JAN-2012 08.00.05 AM
有关数据types,请参阅Oracle文档。
很简单,数字就是时间戳的精确度,即列中保留的秒数的一小部分:
SQL> create table t23 2 (ts0 timestamp(0) 3 , ts3 timestamp(3) 4 , ts6 timestamp(6) 5 ) 6 / Table created. SQL> insert into t23 values (systimestamp, systimestamp, systimestamp) 2 / 1 row created. SQL> select * from t23 2 / TS0 --------------------------------------------------------------------------- TS3 --------------------------------------------------------------------------- TS6 --------------------------------------------------------------------------- 24-JAN-12 05.57.12 AM 24-JAN-12 05.57.12.003 AM 24-JAN-12 05.57.12.002648 AM SQL>
如果我们不指定精度,那么时间戳就默认为六个地方。
SQL> alter table t23 add ts_def timestamp; Table altered. SQL> update t23 2 set ts_def = systimestamp 3 / 1 row updated. SQL> select * from t23 2 / TS0 --------------------------------------------------------------------------- TS3 --------------------------------------------------------------------------- TS6 --------------------------------------------------------------------------- TS_DEF --------------------------------------------------------------------------- 24-JAN-12 05.57.12 AM 24-JAN-12 05.57.12.003 AM 24-JAN-12 05.57.12.002648 AM 24-JAN-12 05.59.27.293305 AM SQL>
请注意,我在Linux上运行,所以我的TIMESTAMP
列实际上给我精确到六个地方,即微秒。 在Unix的大多数(全部)版本中,情况也是如此。 在Windows上,限制是三个地方,即毫秒。 (这是Windows的最现代的味道仍然如此 – 需要引用)。
正如所料,文件涵盖了这一点。 了解更多 。
“当你创build时间戳(9)这会给你nanos正确的”
只有当操作系统支持它。 正如你所看到的,我的OEL设备不会:
SQL> alter table t23 add ts_nano timestamp(9) 2 / Table altered. SQL> update t23 set ts_nano = systimestamp(9) 2 / 1 row updated. SQL> select * from t23 2 / TS0 --------------------------------------------------------------------------- TS3 --------------------------------------------------------------------------- TS6 --------------------------------------------------------------------------- TS_DEF --------------------------------------------------------------------------- TS_NANO --------------------------------------------------------------------------- 24-JAN-12 05.57.12 AM 24-JAN-12 05.57.12.003 AM 24-JAN-12 05.57.12.002648 AM 24-JAN-12 05.59.27.293305 AM 24-JAN-12 08.28.03.990557000 AM SQL>
(那些尾随零可能是巧合,但他们不是)。