2

我在 Oracle 数据库的表中存储了一个时间戳,例如:

01/03/12 16:13:33,000000000

我想将它转换为自 Unix 纪元以来的秒数以在查询中返回。最简单的方法是什么?

编辑:哦,我需要时间戳精度,在这里不能依赖日期类型,因为它的精度较低。

4

1 回答 1

1

也许

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 纪元日期。

分享和享受。

于 2012-05-11T17:38:19.677 回答