2014-06-20 32 views
0

以下查詢的時間差,當發生導致錯誤ORA-01858:「ORA-01858:一個非數字字符被發現,其中一個數字,預計」 - 以兩個日期

SELECT 24*(to_date(EndDate, 'MM/dd/yyyy HH:mi:ss PM')- to_date(StartDate, 'MM/dd/yyyy HH:mi:ss PM')) diff_hours FROM TESTRESULT 
    WHERE TestNo='0000714625' AND EndDate IS NOT NULL AND StartDate IS NOT NULL 
+1

是'StartDate'和類型的''EndDate' date'?或'varchar2'? –

+0

@Justin Cave StartDate和EndDate是日期類型 – user2119324

回答

3

別叫to_datedate列。 to_date實際上並不接受date作爲參數,它只接受varchar2。如果您嘗試將date傳遞給to_date,則Oracle必須執行隱式轉換才能將日期轉換爲varchar2。這將使用會話的nls_date_format。如果這與您傳入to_date的格式掩碼不同,則很可能您會得到錯誤,或者您將得到不正確的結果。

只是減去兩個date列拿到小時差異

SELECT 24* (EndDate - StartDate) 
    ... 
+1

它正在工作...... – user2119324

相關問題