将Oracle的时间戳从epoch转换为秒

时间:2012-05-11 17:15:00

标签: sql oracle plsql

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

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

我希望将Unix的Epoch转换为秒,以便在查询中返回。什么是最容易做到的?

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

1 个答案:

答案 0 :(得分: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

会让你开始。假定1970年1月1日00:00:00Z纪元日期。

分享并享受。