来源:http://www.cnblogs.com/java-class/p/4742740.html
date和timestamp 的区别
date类型是Oracle常用的日期型变量,他的时间间隔是秒。两个日期型相减得到是两个时间的间隔,注意单位是“天”。例如:查看一下当前距离伦敦奥运会开幕还有多长时间:
1 select to_date('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-sysdate from dual
结果是:92.2472685185185天,然后你根据相应的时间换算你想要的间隔就行!这个结果可能对程序员有用,对于想直接看到结果的人,这个数字还不是很直观,所以,就引出了timestamp类型
timestamp是DATE类型的扩展,可以精确到小数秒(fractional_seconds_precision),可以是0 to9,缺省是6。两个timestamp相减的话,不能直接的得到天数书,而是得到,
多少天,多少小时,多少秒等,例如:同样查看一下当前距离伦敦奥运会开幕还有多长时间.
1 select to_timestamp('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-systimestamp from dual
结果是:+000000092 05:51:24.032000000,稍加截取,就可以得到92天5小时,51分钟,24秒,这样用户看起来比较直观一些!但是这个数字对程序员来说不是很直观了,如果想要具体的时间长度的话,并且精度不要求到毫秒的话,可以将timestamp类型转成date类型,然后直接相减即可。
查询当前系统时间,返回成date数据类型。你可以使用sysdate函数。
SQL> SELECT SYSTIMESTAMP FROM DUAL;
SYSTIMESTAMP
---------------------------------------------------------------------------
11-AUG-18 01.55.07.311630 PM +08:00
查询当前系统时间,返回成timestamp数据类型。你可以使用systimpstamp函数。
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2018-08-11 13:55:14
date和timestamp之间的相互转换可以通过
to_char来转换timestamp——>date:
SQL> select to_date(to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual
2 ;
TO_DATE(TO_CHAR(SYS
-------------------
2018-08-11 13:56:27
date ——>timestamp:
SQL> select to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual
2 ;
TO_TIMESTAMP(TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'),'YYYY-MM-DDHH24:MI:SS'
---------------------------------------------------------------------------
11-AUG-18 01.56.35.000000000 PM
SQL>