如何通过SQL从Oracle数据库获取unix epoch时间戳?

时间:2017-03-29 10:15:24

标签: sql oracle unix timestamp epoch

使用Oracle SQL获取unix纪元时间戳的人是否有更好更快的解决方案?:

SQL> select (cast(sysdate as date) - cast(to_date('1970-01-01', 'YYYY-MM-DD') as date)) * 86400 as unixepoch from dual;

 UNIXEPOCH
----------
1490789604;

Oneliner首选;)

2 个答案:

答案 0 :(得分:5)

您不需要将值转换为日期,因为它们已经是日期。

SELECT ( SYSDATE - DATE '1970-01-01' ) * 86400 AS unixepoch
FROM   DUAL;

答案 1 :(得分:1)

只有数据库时区为UTC时,上述答案才有效。 Unix时间总是以UTC为单位。 无论配置如何,适用于任何数据库的正确答案是:

select(强制转换(时区'UTC'作为日期时的systimestamp) - 日期'1970-01-01')* 86400 from dual