在今天的工做中,学到了如下几个知识点: 程序员
1、date和timestamp 的区别 spa
date类型是Oracle经常使用的日期型变量,他的时间间隔是秒。两个日期型相减获得是两个时间的间隔,注意单位是"天"。例如:查看一下当前距离伦敦奥运会开幕还有多长时间: ci
select to_date('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-sysdate from dual io
结果是:92.2472685185185天,而后你根据相应的时间换算你想要的间隔就行!这个结果可能对程序员有用,对于想直接看到结果的人,这个数字还不是很直观,因此,就引出了timestamp类型 变量
timestamp是DATE类型的扩展,能够精确到小数秒(fractional_seconds_precision),能够是 0 to9,缺省是6。两个timestamp相减的话,不能直接的获得天数书,而是获得,多少天,多少小时,多少秒等,例如:一样查看一下当前距离伦敦奥运会开幕还有多长时间: 扩展
select to_timestamp('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-systimestamp from dual date
结果是:+000000092 05:51:24.032000000,稍加截取,就能够获得92天5小时,51分钟,24秒,这样用户看起来比较直观一些!可是这个数字对程序员来讲不是很直观了,若是想要具体的时间长度的话,而且精度不要求到毫秒的话,能够将timestamp类型转成date类型,而后直接相减便可。 select
date和timestamp之间的相互转换能够经过to_char来转换: 程序
timestamp——>date: select to_date(to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual im
date ——>timestamp: select to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual