2 pyshibin pyshibin 于 2013.09.02 16:54 提问

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语句的?

3个回答

u011933996
u011933996   2013.09.02 17:06

sysdate 是date类型的,‘2013-01-01’是字符类型,两个不同类型的对象肯定是不能比较的
你可以试着把sysdate给它tochar一下,或者把“=”改成like

flyed2008
flyed2008   2013.09.03 13:07

jdbc不会改变的你sql语句,是oracle在执行时会时间进行字符格式化,你可以在oracle端设置日期格式,不过最好的方法是做转换就像1楼说的那样的

shendixiong
shendixiong   2013.09.17 17:38
select 1 from dual where sysdate='2013-01-01';

应该用到 to_date('2013-01-01','yyyy-mm-dd')
不然在pl/sql会报错!两个之间类型不对,

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!