Oracle date timestamp 毫秒

yyyy-mm-dd hh24:mi:ss.ff  年-月-日 时:分:秒.毫秒

 

关于毫秒:

            Oracle 毫秒的存储必须字段类型为 timestamp(6) –数字表示存储的毫秒位数

--当前毫秒级时间

select to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual;

--字符串转为 timestamp类型

select to_timestamp('2012-02-03 10:29:46.453234','yyyy-mm-dd hh24:mi:ss.ff6') from dual;

--timestamp转为字符型

select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual;

PS: ff后面的数字表示获得的毫秒位数,默认是6;一般ff3 获得三位毫秒数。 

 

如果你想把DATE类型转换成TIMESTAMP类型,就使用CAST函数。

select cast(sysdate as timestamp) from dual;

但是值得注意的是:在转换后的时间段尾部有了一段“.000000”。这是因为从date转换过来的时候,没有小数秒的信息,缺省为0。而且显示格式是按照参数NLS_TIMESTAMP_FORMAT定的缺省格式显示。当你把一个表中date类型字段的数据移到另一个表的timestamp类型字段中去的时候,可以直接写INSERT SELECT语句,oracle会自动为你做转换的。

 

注意: to_char函数支持date和timestamp,但是trunc却不支持TIMESTAMP数据类型。这已经清楚表明了在当两个时间的差别极度重要的情况下,使用TIMESTAMP数据类型要比DATE数据类型更确切。

 

还值得一提的是:毫秒的显示精度是6位,不过有效位是3位,即最大值达到999,满1000ms就进为1s。当然你想保存6位毫秒也是有办法的:

insert 值指定六位:to_timestamp('2012-02-03 10:29:46.453234','yyyy-mm-dd hh24:mi:ss.ff6')

原文地址:https://www.cnblogs.com/liuys635/p/14254303.html