1. 程式人生 > >【轉】ORACLE中時間類型date和timestamp的相互轉化

【轉】ORACLE中時間類型date和timestamp的相互轉化

數據類型 span 時間類型 mes 常用 tro 1.5 cnblogs 的區別



來源: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的相互轉化