有人可以解释为什么这段代码
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".
谢谢
最佳答案
您的代码可以在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
当然,有一个月的天数并不总是相同的:2月
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
关于sql - Oracle SQL转换功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8325165/