可能有人請解釋爲什麼這代碼的Oracle SQL轉換功能
to_date('25-JAN', 'DD-MON')
作品,這不
to_date(to_char(date_of_birth, 'DD-MON'), 'DD-MON')
運行
to_char(date_of_birth, 'DD-MON')
這是內功能在它自己的瓦特獸人,但後來引發
"ORA-01839 error: date not valid for month specified".
感謝
可能有人請解釋爲什麼這代碼的Oracle SQL轉換功能
to_date('25-JAN', 'DD-MON')
作品,這不
to_date(to_char(date_of_birth, 'DD-MON'), 'DD-MON')
運行
to_char(date_of_birth, 'DD-MON')
這是內功能在它自己的瓦特獸人,但後來引發
"ORA-01839 error: date not valid for month specified".
感謝
你有一個無效的一天,特定月份在你的餐桌, 例如:
SQL> select date '1996-01-29' + interval '1' month as col_1
2 , date '1997-01-29' + interval '1' month as col_2
3 , date '1997-08-11' - interval '3' month as col_3
4 from dual;
, date '1997-01-29' + interval '1' month as col_2
*
ERROR at line 2:
ORA-01839: date not valid for month specified
SQL>
SQL> select date '1996-01-29' + interval '1' month as col_1
2 , date '1997-01-28' + interval '1' month as col_2
3 , date '1997-08-11' - interval '3' month as col_3
4 from dual;
Enter...
29-02-1996 28-02-1997 11-05-1997
1 row selected.
看看你的表內的無效天一個月。
您的代碼可以正常工作,1月25日作爲日期。問題是日期需要一年。所以當你這樣做時:
TO_DATE('25-JAN', 'DD-MON')
...... Oracle需要建立一個完整的日期並假設當前年份。證明:
SELECT TO_CHAR(TO_DATE('25-JAN', 'DD-MON'))
FROM DUAL
...打印:
25/01/2011 00:00:00
當然,還有一個月,不總是有相同的天數是:二月
SELECT TO_CHAR(TO_DATE('29-FEB-2000', 'DD-MON-YYYY'))
FROM DUAL
-- 29/02/2000 00:00:00
SELECT TO_CHAR(TO_DATE('29-FEB', 'DD-MON'))
FROM DUAL
-- ORA-01839: date not valid for month specified
非常感謝,我做了一個搜索(在OE模式中的客戶表date_of_birth列),並發現'29 -FEB',這意味着錯誤是2011年的結果不是一個閏年,愚蠢的我。我很高興,現在我知道在處理日期數據類型列時應該注意些什麼。再次感謝。 –
@AndrewMudamai歡迎您。隨時將問題標記爲已回答,以便將來可以幫助其他人。 –
感謝Nammari,我是能夠在我嘗試從中提取數據的列中找到'29 -FEB'。從現在開始我會留意這種情況。 –