使用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首选;)
答案 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