2012-05-08 262 views

回答

3

By Unix timestamp我假設你的意思是自1970-01-01 00:00:00 UTC以來的秒數(或其他)。

在DB2中沒有內置的功能(從V6R1開始)。
你也遇上了以下問題:

  • DB2中的所有時間戳「本地時間」 - 它們不包含任何時區信息,以及所有CURRENT_TIMESTAMP寫入是基於什麼時候請求系統認爲它是,不是的主人。
  • 夏時制時間變化頻繁。您需要增加開銷來管理您的轉換。
  • TIMESTAMPDIFF函數返回估計值,而不是的確切值。你可能會生存多年/月持續時間,超過足夠的差異,但日子不會削減它。
  • 時間戳算法是不準確的(除其他事項外,幾個月被認爲是在長度始終爲30天... ...)

你最好的選擇將是開始使用DAYS(返回因爲0001天的數-01-01)。請記住,最好在UTC中做所有事情,因爲它將而不是考慮到夏令時。

2

使用DAYSMIDNIGHT_SECONDS是更精確的比TIMESTAMPDIFF

SELECT 
86400*(DAYS(CURRENT TIMESTAMP - CURRENT TIMEZONE)-DAYS('1970-01-01')) 
+ MIDNIGHT_SECONDS(CURRENT TIMESTAMP - CURRENT TIMEZONE) 
"UNIX_TIMESTAMP" 
FROM SYSIBM.SYSDUMMY1