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