2012-07-08 31 views
2

您好我有表在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秒)

如何得到這種減法?

謝謝!

+0

...兩個_different_數據類型存儲間隔數據是可怕的。實際上,這將是創建一些用戶定義類型的完美例子,這會爲您提供很好的類型安全性,並可能允許您在「正常」日期算法中使用它們。 – 2012-07-09 16:16:44

+0

這是從我的客戶數據庫,我不能做任何事情或改變他們的數據庫中的類型,所以這絕對不是一個解決方案 – Dejan 2012-07-10 08:57:11

回答

2

您有兩個字段(字符串和小數字段)轉換爲INTERVAL數據類型,然後執行減法操作。看看this article,它解釋瞭如何處理DB2中的時間間隔。

使用功能,您將在本文中找到可以安排例如在這樣的解決方案:

SELECT ID, 
NUMTODSINTERVAL(TIME1, 'SECOND') - TO_DSINTERVAL('0 ' || TIME2) AS TIME1-TIME2 
FROM table 
+0

感謝您的迴應,但有許多功能。不確定要使用哪一個,我必須在兩個字段上都這樣做?你能寫一個例子嗎?謝謝,問候 – Dejan 2012-07-08 14:17:26

+0

看看我已發佈的示例應該工作,即使我沒有嘗試過... – aleroot 2012-07-08 14:25:18

+0

感謝您的努力。我在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