2012-06-08 107 views
0

當試圖執行下列SQL:Mysql的SEC_TO_TIME產生錯誤

SELECT SEC_TO_TIME(sum(TIME_TO_SEC(TIMEDIFF(edate,sdate))-rast)+3600) as TotalDiff from tblregtime where userID IN(97,41) AND year(sdate)=2012 

返回該錯誤:產生

多步OLE DB操作錯誤。檢查每個OLE DB狀態值(如果可用)。沒有工作完成。

只有當totalDiff的總和超過24小時時纔會出現問題。任何建議,爲什麼我得到這個錯誤?

+0

我會說,這與mysql無關,但您的驅動程序或您使用它的方式。 – Sebas

+0

我認爲負值傳遞給SEC_TO_TIME或TIME_TO_SEC函數。 –

+0

當直接對數據庫運行SQL時,我會得到正確的輸出。它當我試圖執行SQL時,運行網站,即時獲取錯誤。 (使用mysql odbc 5.1) –

回答

0

SEC_TO_TIME:結果的範圍限制爲TIME數據類型的範圍。如果參數與該範圍之外的值相對應,則會發生警告。

TIME:TIME值的範圍可以從'-838:59:59'到'838:59:59'。

sum(TIME_TO_SEC(TIMEDIFF(edate,sdate))-rast)+3600是否可能在規定範圍之外?

(定義提供在線MySQL 5.5 Reference Manual)。

+0

沒有它不可能 –

+0

添加代碼到您的Web應用程序打印出每個部分的值(edate,sdate,rast),甚至可能執行TIMEDIFF(edate,sdate)部分查詢 - - TIME_TO_SEC ...並將其打印出來......檢查錯誤發生時這些值是什麼。畢竟,它一定是SOMETHING! –