将oracle NUMBER转换为Timestamp

时间:2016-12-12 10:31:08

标签: sql oracle

我有一个在oracle中有一列的表,其中列有一个    数据类型为NUMBER(10,0)

在此专栏中,有人存储了timestamp    数据。(例如,3613470611,3613470666等)。我需要进行查询    显示此timestamp和之间的时差    current_timestamp

select (cast(current_TIMESTAMP as date)- date '1900-01-01')*24*60*60 - columen1 from mytable;

(column1是NUMBER(10,0)的类型) 此查询工作正常。

问题是,我无法将结果转换为日期,以便我可以看到月份,日期,小时,

  • 我得到的结果是这样的:7487317474873713(我猜这个 不是时间戳,而是数字)
  • 我喜欢按照以下格式进行转换:December 12, 2016 11:05:10

所以,请帮助!!

2 个答案:

答案 0 :(得分:-1)

您的号码可能是linux格式号码。简单的转换答案是:

Select  to_date('1970-01-01','YYYY-MM-DD') + numtodsinterval(yourNumber,'SECOND') from dual

答案 1 :(得分:-3)

日期的差异是秒,是的,它的数量。日期是Oracle中的一个数字。分数的整数部分是天,其他任何东西都是小时和秒。 这里你有几秒钟之间的差异

select (sysdate - date '1900-01-01')*24*60*60 from dual;

以下是日期格式的当前日期+时差。

select sysdate+(cast (systimestamp as date) - date '1900-01-01') from dual;