问题描述
- jdbc执行sql中日期参数问题
-
select 1 from dual where sysdate='2013-01-01';这样一个sql语句,在jdbc中可以正确执行,在pl/sql中确报错:“ORA-01861: literal does not match format string”,select 1 from dual where sysdate='01-1月-2013'在pl/sql中可以正常执行,求教大神,jdbc会改变我的sql语句吗?jdbc是怎么执行sql语句的?
解决方案
sysdate 是date类型的,‘2013-01-01’是字符类型,两个不同类型的对象肯定是不能比较的
你可以试着把sysdate给它tochar一下,或者把“=”改成like
解决方案二:
jdbc不会改变的你sql语句,是oracle在执行时会时间进行字符格式化,你可以在oracle端设置日期格式,不过最好的方法是做转换就像1楼说的那样的
解决方案三:
select 1 from dual where sysdate='2013-01-01';
应该用到 to_date('2013-01-01','yyyy-mm-dd')
不然在pl/sql会报错!两个之间类型不对,
时间: 2024-09-19 23:42:42