将Unixtime转换为Datetime SQL(Oracle)

Dan*_*SFT 3 sql oracle unix-timestamp

我有一个日期时间字段(P_DT),我想返回所有结果,其中P_DT大于输入unix时间戳.

Oracle是否有任何可以提供帮助的内置函数?

在我的搜索中,我找到了DateTime到Unix的resuts但没有Unix到DateTime ...

Jus*_*ave 13

没有内置功能.但写一个相对容易.因为Unix时间戳是自1970年1月1日以来的秒数

CREATE OR REPLACE FUNCTION unix_ts_to_date( p_unix_ts IN NUMBER )
  RETURN DATE
IS
  l_date DATE;
BEGIN
  l_date := date '1970-01-01' + p_unix_ts/60/60/24;
  RETURN l_date;
END;
Run Code Online (Sandbox Code Playgroud)

你可以看到被称为

SQL> select unix_ts_to_date( 1336822620 ) from dual;

UNIX_TS_TO_DATE(133
-------------------
2012-05-12 11:37:00
Run Code Online (Sandbox Code Playgroud)

  • Unix时间戳是自1970年1月1日00:00:00**UTC**以来的秒数.除非数据库服务器在UTC上运行,否则你应该使用`(TIMESTAMP'1970-01-01 00:00:00'AT TIME ZONE'DES'+ numtodsinterval(p_unix_ts,'second'))AT LOCAL` (2认同)