【轉】ORACLE中時間類型date和timestamp的相互轉化
來源: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>
【轉】ORACLE中時間類型date和timestamp的相互轉化