因新工作需要用到Oracle数据库,且使用月份差的函数;在PL/SQL上对完整的SQL进行解释计划时,未报错误,且资源消耗很理想;待提交测试后,使用入参进行测试时报错:
Orcal数据库中ORA-01861: 文字与格式字符串不匹配
--原SQL
SELECT months_between(to_date(to_char(sysdate,'yyyy-mm-dd')),to_date(to_char(T.START_DATE ,'yyyy-mm-dd'))) from dual
经后续重新检查代码,发现to_char()函数后将日期按照 ‘yyyy-mm-dd’ 进行格式化;后续的 to_date()函数原以为字符时间格式已经固定为‘yyyy-mm-dd’,不需要再进行指定‘yyyy-mm-dd’。报错后多次检查其余部分SQL代码均未出现问题,将to_date()补充完格式后正常。to_date(转换值,‘yyyy-mm-dd转换格式’)每一步都不能省略。
--改正后SQL
SELECT months_between(to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'),to_date(to_char(T.START_DATE ,'yyyy-mm-dd'),'yyyy-mm-dd')) from dual