有人可以解释为什么这个代码
to_date('25-JAN', 'DD-MON')
Run Code Online (Sandbox Code Playgroud)
工作,但没有
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".
Run Code Online (Sandbox Code Playgroud)
谢谢
您的代码在1月25日作为日期正常运行.问题是日期需要一年.所以当你这样做时:
TO_DATE('25-JAN', 'DD-MON')
Run Code Online (Sandbox Code Playgroud)
... Oracle需要建立一个完整的日期并假设当前年份.证明:
SELECT TO_CHAR(TO_DATE('25-JAN', 'DD-MON'))
FROM DUAL
Run Code Online (Sandbox Code Playgroud)
...打印:
25/01/2011 00:00:00
Run Code Online (Sandbox Code Playgroud)
当然,有一个月并不总是有相同的天数:二月
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
552 次 |
| 最近记录: |