此查询:select EXTRACT(HOUR FROM 1435047532) as hour from TABLENAME;
返回此错误:“提取源的无效提取字段”。
我想从给定的时间戳中提取小时。也许问题是时间戳字段的格式是NUMBER而不是TIMESTAMP?从时间戳记提取SQL小时
回答
试试这个
select extract(hour from (select to_date('19700101', 'YYYYMMDD')
+ (1/24/60/60) * 1435047532 from dual)) from dual
您将得到'ORA-30076:提取源的无效字段'。如果你想提取小时数,你需要使用'TIMESTAMP'。 – MT0
你可以用时间转换您的数字纪元以来秒至一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。
我们已经讨论过了。 Unix时间戳不支持闰秒。但是,您可能会认为'1970-01-01 00:00:00'总是以UTC时间给出,而不是本地。这不是对你的回答的批评,而是根据具体需要调整它的提示。 –
@WernfriedDomscheit如果在特定时区(即PST)需要时间戳,那么可以使用'FROM_TZ(TIMESTAMP'1970-01-01 00:00:00'+ NUMTODSINTERVAL(your_time_since_epoch,'SECOND'),' UTC')在时区'PST'。 – MT0
- 1. Oracle时间戳:提取整小时
- 2. 时间戳记sql查询
- 3. ActiveModel时间戳记字段:时间戳记从哪里来?
- 4. SQL时间戳提取时间和组由
- 5. 从一列时间提取小时
- 6. SQL,时间在时间戳
- 7. 从时间戳获取本地时间
- 8. 提取日期只能从给定时间戳在Oracle SQL
- 9. BigQuery标准SQL:从时间戳中提取星期几名称
- 10. 无法从时间戳Postgres的提取时间
- 11. 从时间戳中提取时间部分
- 12. 大熊猫:提取日期和时间从时间戳
- 13. 扣除从时间戳24小时
- 14. 时间戳查询小时
- 15. 从时间戳
- 16. 从服务器获取的时间戳本地时间戳
- 17. 如何从postgres获取时间戳作为时间戳?
- 18. 从日期SQL提取小时PHP
- 19. 从时间戳中提取一年时总是得到“1970”
- 20. 如何从带时区的时间戳提取日期
- 21. 从ISO 8601时间戳显示12小时时间格式
- 22. 从MySQL时间戳获取时间并以小时,分钟等形式显示?
- 23. 在Microstrategy中提取出时间戳
- 24. XML Hive Serde提取时间戳Hadoop
- 25. 从Datetime2提取时间的SQL函数
- 26. Spark sql(1.4):获取当前时间戳
- 27. 如何在SQL Server时间戳和时间戳之间
- 28. 从时间戳表
- 29. 用于提取时间戳差异的SQL查询
- 30. 的Oracle SQL:提取的日期在时间戳
1435047532只是一个数字,您需要定义它是如何解释为日期/时间。例如。自从1600-01-01T00:00:00以来,它是Unix时代以来的秒数还是10ns? – Richard
@Richard我编辑的问题指定的格式是NUMBER和问这是否是问题。所以你是对的,它的。这个数字是来自Uniix时代的秒数。如何将它们转换为正确的格式? – Caramelleamare
为什么你甚至在你真的想要一个时间戳的时候存储这样一个unix数字?我建议你改变你的表格设计并切换到'date'(这是一个真正的日期时间)或'timestamp'(即创建一个新列,计算ist值并删除旧列)。 –