道歉,我很新的的Oracle SQL所以有可能是一些令人眼花缭乱的不对的!日期建设Oracle服务器“Oracle数据库错误1839年”
当我运行下面的语句作为查询的一部分,给出了以下错误: “Oracle数据库错误1839年:ORA-01839:日期不适用于指定月”
我觉得这事做与闰年,因为当我过滤我的时间序列的最新数据(3月 - 当前日期)则没有错误提前给出了
感谢
(TO_CHAR(extract(year from TO_DATE('01/01/2000','DD/MM/YYYY')), '9999')
-
(
TO_CHAR(extract(year from "DELIVERY_DATE"), '9999')
- TO_CHAR(extract(year from "TRADING_DATE"), '9999')
)
)
|| TO_CHAR(extract(month from "TRADING_DATE"), 'FM00')
|| TO_CHAR(extract(day from "TRADING_DATE"), '99')
,'YYYYMMDD')
特殊照顾是正确的。年份可能是1999年或1998年,具体取决于交割日期和交易日期之间的差异。所以如果月份部分是二十九,日部分是二十九;你会得到一个错误。您需要首先检查年份是闰年,然后再执行其余的SQL。以下是检查闰年的功能:http://www.dba-oracle.com/t_detect_leap_year_function.htm – anonyXmous
此代码有几个错误。例如,您可以调用输出字符串的'TO_CHAR'。然后你从另一个中减去一个字符串。甲骨文是宽容的 - 它会将字符串转换回数字 - 并且运气好的话,甲骨文将会正确地做到这一点(然而,有时它确实会错误)。如果你能解释你最初想解决什么问题,而不是修复你的代码,那么你可能会得到更好的帮助;我只是猜测一个更简单的解决方案可能存在。 – mathguy
@mathguy,是的,我们可以改进sql,因为它所做的是复制交易日期的月份和日期,然后从2000年减去交货日期和交易日期之间的年份差异。希望它是明确的。 – anonyXmous