转自http://hi.baidu.com/suofang/item/a78e3c394d41fb8af5e4ad10。

to_date如何取得毫秒?

​由于oracle中date类型只支持到秒,不支持到毫秒,所以to_date()不能取到毫秒。如果要取到毫秒,oracle

9i以上版本,可以使用timestamp类型,是date的扩展类型,能支持到毫秒,毫秒的显示精度是6位,不过有效位是3位,即最大值达到999,满1000ms就进为1s。而与to_date()对应的转换函数可以使用to_timestamp()。select

to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff')

as mydate from

dual;如果想将timestamp又转换成date类型,可以使用cast()函数,但得到的date类型没有了毫秒值。如下:

select cast(to_timestamp('2011-12-15 10:40:10.345',

'yyyy-MM-dd HH24:MI:ss.ff') as date) as mydate from

dual;

如把"1970-01-0100:00:00.356“,转化成时间,需要保留毫秒数,怎么做?我一般都是用到秒的(to_date('1970-01-0100:00:00.356','yyyy-mm-dd

hh24:mi:ss'))。 毫秒怎么表示?

9i以上版本-----------------------------SQL>select

to_char(systimestamp,'yyyy-mm-ddhh24:mi:ssxff')

time1,to_char(current_timestamp) time2 from dual;

TIME1                     TIME2---------------------------------------------------------------------------------------------2003-10-24

10:48:45.656000 24-OCT-03 10.48.45.656000

AM+08:00可以看到,毫秒在to_char中对应的是FF。

SQL> select

to_timestamp('2003-10-2410:48:45.656000','yyyy-mm-dd

hh24:mi:ssxff') from dual;

TO_TIMESTAMP('2003-10-2410:48:-------------------------------------------------24-10月-03

10.48.45.656000000 上午

还值得一提的是:毫秒的显示精度是6位,不过有效位是3位,即最大值达到999,满1000ms就进为1s

date类型只能到秒用timestamp可以到毫秒select to_char(systimestamp,

'yyyy-mm-dd hh24:mi:ss.ff ') fromdual

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐