SQL从时间戳中提取小时

时间:2017-04-05 08:54:10

标签: sql oracle timestamp extract

此查询:select EXTRACT(HOUR FROM 1435047532) as hour from TABLENAME;
返回此错误:“提取源的无效提取字段” 我试图从给定的时间戳中提取小时。也许问题是时间戳字段的格式是NUMBER而不是TIMESTAMP?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法将数字秒 - 自 - 纪元时间转换为TIMESTAMP类型:

TIMESTAMP '1970-01-01 00:00:00' + NUMTODSINTERVAL( your_time_since_epoch, 'SECOND' )

所以要花时间:

SELECT EXTRACT( HOUR FROM TIMESTAMP '1970-01-01 00:00:00'
                          + NUMTODSINTERVAL( 1435047532, 'SECOND' ) )
FROM   DUAL;

如果您需要处理闰秒,则需要to create a function/package to handle this

答案 1 :(得分:0)

试试这个

select extract(hour from (select to_date('19700101', 'YYYYMMDD') 
+ ( 1 / 24 / 60 / 60 ) * 1435047532 from dual)) from dual