我在 Oracle 数据库的表中存储了一个时间戳,例如:
01/03/12 16:13:33,000000000
我想将它转换为自 Unix 纪元以来的秒数以在查询中返回。最简单的方法是什么?
编辑:哦,我需要时间戳精度,在这里不能依赖日期类型,因为它的精度较低。
也许
WITH I AS (SELECT (TO_TIMESTAMP_TZ('01/03/12 16:13:33,000000000' || SESSIONTIMEZONE,
'DD/MM/RR HH24:MI:SS,FF9TZH:TZM') -
TO_TIMESTAMP_TZ('01/01/1970 00:00:00 GMT',
'DD/MM/YYYY HH24:MI:SS TZR')) AS UNIX_INTERVAL
FROM DUAL)
SELECT (EXTRACT(DAY FROM UNIX_INTERVAL) * 86400) +
(EXTRACT(HOUR FROM UNIX_INTERVAL) * 3600) +
(EXTRACT(MINUTE FROM UNIX_INTERVAL) * 60) +
(EXTRACT(SECOND FROM UNIX_INTERVAL))
FROM I
会让你开始。这假设 01-Jan-1970 00:00:00Z 纪元日期。
分享和享受。