此查詢: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值並刪除舊列)。 –