将NUMBER转换为DATE

时间:2015-07-02 15:58:30

标签: sql oracle

我的Oracle数据库中有一个表示日期的数字字段。

我对Oracle命令并不熟悉。

我想知道是否有人可以在这里提供一些指南。

感谢。

示例:1435755908 = 2015年7月1日9:05

2 个答案:

答案 0 :(得分:1)

这是一个Unix时间戳,即自1970年1月以来的秒数,尝试这个公式:

timestamp '1970-01-01 00:00:00' + 1435755908/86400

答案 1 :(得分:1)

由于似乎存在时区差异:

select date '1970-01-01' + 1435755908/86400 as converted from dual;

CONVERTED                              
----------------------------------------
2015-07-01 13:05:08                     
你似乎需要做一些时区操作。大纪元时间是UTC,因此您可以使用from_tz来声明,然后at time zone获取美国/东海岸的等效内容:

select from_tz(cast(date '1970-01-01' + 1435755908/86400 as timestamp), 'UTC')
  at time zone 'America/New_York' as converted from dual;

CONVERTED                              
----------------------------------------
2015-07-01 09:05:08.000 AMERICA/NEW_YORK

这是带时区的时间戳。如果你想把它作为一个简单的日期,那么投下它:

select cast(from_tz(cast(date '1970-01-01' + 1435755908/86400 as timestamp), 'UTC')
  at time zone 'America/New_York' as date) as converted from dual;

CONVERTED                              
----------------------------------------
2015-07-01 09:05:08