您好我有表在DB2:SQL如何在float time和string time上執行計算?
ID TIME1 TIME2
1000 480.5 30:30:00
我想TIME1,TIME2
ID TIME1-TIME2
1000 450.0
TIME1是十進制值在小時 - 如此480.5小時。 TIME2是字符串值:30:30:00(30小時30分00秒)
如何得到這種減法?
謝謝!
您好我有表在DB2:SQL如何在float time和string time上執行計算?
ID TIME1 TIME2
1000 480.5 30:30:00
我想TIME1,TIME2
ID TIME1-TIME2
1000 450.0
TIME1是十進制值在小時 - 如此480.5小時。 TIME2是字符串值:30:30:00(30小時30分00秒)
如何得到這種減法?
謝謝!
您有兩個字段(字符串和小數字段)轉換爲INTERVAL數據類型,然後執行減法操作。看看this article,它解釋瞭如何處理DB2中的時間間隔。
使用功能,您將在本文中找到可以安排例如在這樣的解決方案:
SELECT ID,
NUMTODSINTERVAL(TIME1, 'SECOND') - TO_DSINTERVAL('0 ' || TIME2) AS TIME1-TIME2
FROM table
感謝您的迴應,但有許多功能。不確定要使用哪一個,我必須在兩個字段上都這樣做?你能寫一個例子嗎?謝謝,問候 – Dejan 2012-07-08 14:17:26
看看我已發佈的示例應該工作,即使我沒有嘗試過... – aleroot 2012-07-08 14:25:18
感謝您的努力。我在NUMTODSINTERVAL函數得到錯誤我希望這不是我得到TIME1的問題用這個表達式(dec((timestampdiff( 4, char(t1.actualfinish -t1.reportdate))/ 60.00),10,2))和TIME2來自某個其他表T2。我成功地加入了我的工作。因此,表達式將是NUMTODSINTERVAL((dec((timestampdiff( 4, char(t1.actualfinish -t1.reportdate))/ 60.00),10,2)),'SECOND') - TO_DSINTERVAL('0'|| T2 .TIME2) – Dejan 2012-07-08 14:56:53
...兩個_different_數據類型存儲間隔數據是可怕的。實際上,這將是創建一些用戶定義類型的完美例子,這會爲您提供很好的類型安全性,並可能允許您在「正常」日期算法中使用它們。 – 2012-07-09 16:16:44
這是從我的客戶數據庫,我不能做任何事情或改變他們的數據庫中的類型,所以這絕對不是一個解決方案 – Dejan 2012-07-10 08:57:11