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.CHAR
,VARCHAR2
)表示的日期轉換為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 |
+---------------+
參考:
沒有留言:
張貼留言