Sql 转换Oracle';从历元到秒的时间戳
我在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,
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历元?是否要返回非整数?