Sql 转换Oracle';从历元到秒的时间戳

Sql 转换Oracle';从历元到秒的时间戳,sql,oracle,plsql,Sql,Oracle,Plsql,我在Oracle数据库的表中存储了一个时间戳,例如: 01/03/12 16:13:33,000000000 我想将它转换为从Unix的纪元开始在查询中返回的秒数。做这件事最容易的方法是什么 编辑:哦,我需要时间戳精度,不能依赖于这里的日期类型,因为它的精度较低。也许吧 WITH I AS (SELECT (TO_TIMESTAMP_TZ('01/03/12 16:13:33,000000000' || SESSIONTIMEZONE,

我在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
会让你开始的。这假定为1970年1月1日00:00:00Z纪元日期


分享和享受。

一个甲骨文
日期
精确到秒。Oracle
时间戳具有亚秒精度。但是Unix时代的精度一般只有第二级。所以我不确定我是否理解你关于精确性的评论。例如,如果时间戳有毫秒或纳秒,您希望如何将其转换为Unix历元?是否要返回非整数?