gpt4 book ai didi

sql - Oracle SQL 转换函数

转载 作者:行者123 更新时间:2023-12-02 08:51:22 27 4
gpt4 key购买 nike

谁能解释一下为什么这段代码

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 

当然,有一个月份的天数并不总是相同:二月

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com