網頁

2018/11/29

Oracle SYSDATE 與 SYSTIMESTAMP的差別

Oralce的SYSDATESYSTIMESTAMP函式皆可取得資料庫所在系統的日期時間,而差別如下。

SYSDATE預設返回日期格式資訊,其仍包含了時間資訊,但不包含毫秒資訊,也不包含時區(time zone)資訊。

SELECT TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS' ) AS NOW FROM DUAL;
NOW
-------------------
11-29-2018 22:38:36

SYSTIMESTAMP會傳回資料庫所在系統的日期,時間,毫秒及時區資訊。

SELECT SYSTIMESTAMP AS NOW FROM DUAL;
NOW
------------------------------------
29-NOV-18 10.43.28.341000 PM +08:00

會有以上的疑問是因為最近專案的資料表schema文件在取得當前時間時(例如資料表的的建立時間欄位及更新時間欄位),發現有人用SYSDATE,也有人用SYSTIMESTAMP,搞得我好亂阿。

一般來說多是用SYSTIMESTAMP,因為比較精確。


另外Oracle TIMESTAMP的最大值為9999-12-31-23.59.59.999999


參考:

沒有留言:

張貼留言