網頁

2019/11/7

Oracle 取得今日的毫秒數 convert SYSDATE to milliseconds

Oracle 取得今日並轉成毫秒(milliseconds)的SQL語法如下。


SELECT 
    (SYSDATE - TO_DATE('1970/01/01', 'YYYY/MM/DD')) 
    * (24 * 60 * 60 * 1000) 
    AS TODAY_MS 
FROM DUAL;

執行結果如下。

+---------------+
|   TODAY_MS    |
+---------------+
| 1573183854000 |
+---------------+

SYSDATE函式可取得資料庫系統現在的日期時間。

TO_DATE()函式可以將字串(eg.CHARVARCHAR2)表示的日期轉換為DATE格式。

(SYSDATE - TO_DATE('1970/01/01', 'YYYY/MM/DD'))表示今日時間與系統開始日期時間1970/01/01 00:00:00 UTC (Unix epoch)間的間隔日數。

1/1000秒為1毫秒,也就是1秒有1000毫秒,所以(24 * 60 * 60 * 1000)代表一日的毫秒數,也就是一天有86400毫秒。

24 hours x 60 minutes x 60 seconds x 1000 milliseconds = 86400 milliseconds。

所以今日與系統開始日間的日數乘上每一天的毫秒數86400的結果即為今日的毫秒。

但要注意DATE的時間資訊僅到秒(Seconcd),因此以上查出的毫秒資訊會是000。

若要精確到毫秒訊可用以下SQL。

SELECT 
    (SYSDATE - TO_DATE('1970/01/01','YYYY/MM/DD'))
    * (24 * 60 * 60 * 1000)
    + TO_NUMBER(TO_CHAR(SYSTIMESTAMP,'FF6')) 
    AS TODAY_MS
FROM DUAL;

執行結果如下。

+---------------+
|   TODAY_MS    |
+---------------+
| 1573183854228 |
+---------------+


參考:

沒有留言:

張貼留言