急,关于informix数据库日期格式问题! 错误代码79802
我有个问题很急,希望高手可以帮帮我!首先,说一下我的环境:
数据库:informix 9.30.FC5,它的DBDATE=Y4MD/。
操作系统:HP-UNIX
中间件:Weblogic 8.1
然后,
我在java类里调用一条sql语句,例如:
select * from tb1 where rdate=?
现在这个?参数我不能确定是以什么形式进去的。
rdate是个日期类型的字段。
按理最终在数据库里应该是转换成YYYY/MM/DD的格式到数据库表里去匹配的。
可以确定的一点是,我的程序里是以"YYYYMMDD"的字符串形式给sql语句赋值的。
我有两套环境,测试环境1,测试环境2。
当然,两套环境的数据库、操作系统、中间件都是一样的。
现在,我的测试环境1可以执行那个类而不报错。
而测试环境2的却不行,我也不知道究竟哪里的配置出了问题,希望有高手可以指点指点!
我没多少分,希望大家不要介意!
也希望大家多给给意见!
谢谢了!
哦!差点忘了,数据库报的错误代码是 79802,该错误的具体描述如下:
-79802 Not enough tokens are specified in the string representation of a
date value.
This error occurs because the date string specified does not have the
minimum number of tokens or separators needed to form a valid date value
(composed of year, month, and day numerical parts). For example, 12/15/98
is a valid date string representation with the slash character as the
separator or token. But 12/1598 is not a valid date string representation,
because there are not enough separators or tokens. To fix the problem,
modify the date string representation to include a valid format for
separating the day, month, and year parts of a date value.
回复 #1 kingsonwong_198 的帖子
这是由于你用Y4MD/的日期格式,程序中也应该用“YYYY/MM/DD”,你的测试1能执行,可能是由于DBDATE=Y4MD,漏了/。 谢谢3sane。没有,我的两套环境都是Y4MD/,这个我可以向你保证。现在我的问题有了重新的定位了,我已经可以把问题定位到抛错的地方了。
是informix的jdbc里的一个类dateutil抛的错。
准确来说,是调用
com.informix.util.dateUtil.convertDateObj
方法时抛的错。
我已经把两个测试环境的jdbc换成了一样的了,但是,依然是测试环境1可以执行,测试环境2不可以执行
,依然抛错。
如果我在测试环境1里直接调用
com.informix.util.dateUtil.convertDateObj
它同样抛错,一样的错 -79802。也就是说,测试环境1里,根本就不会走
com.informix.util.dateUtil.convertDateObj这步。
现在的问题就在这里了,为什么测试环境1里不走这步,而测试环境2里会走这一步呢?
跟中间件weblogci有关吗?如果有关,是否可以通过调整其参数而解决呢?
还请高手指教!谢谢! 原帖由 kingsonwong_198 于 2008-1-20 18:10 发表 http://bbs.chinaunix.net/images/common/back.gif
谢谢3sane。没有,我的两套环境都是Y4MD/,这个我可以向你保证。
现在我的问题有了重新的定位了,我已经可以把问题定位到抛错的地方了。
是informix的jdbc里的一个类dateutil抛的错。
准确来说,是调用
com ...
从两个系统中各取出一条这样的数据,看一下这个时间字段的格式是什么...... 数据抽出来是是YYYY/MM/DD的格式的。
如果我在程序里把日期弄成"YYYY/MM/DD"是肯定不会错的。
但是,我需要的不是这样的解决办法,而且,假如要改成"YYYY/MM/DD"的话,会涉及我很多程序都要改动,这个改动代价比较高。
而测试环境1里同样的程序都可以通过,那么就应该有其它办法,让测试环境2和测试环境1一样,可以通过我的程序。
我要的就是这个办法,在不改动我的程序上进行问题的解决!
谢谢了!
我补充一下,
一,HP-UNIX 在补丁上,有点不同,测试环境1的补丁没打全。而测试环境2里的HP-UNIX是新来的机子,系统也是最新的。
二,Weblogic 8.1,测试环境1里是我们装的,测试环境2不是我们装的,不知道在安装过程中是否存在不同设置。
不知道这两点对问题的解决是否有帮助,希望再指点! 原帖由 kingsonwong_198 于 2008-1-23 22:13 发表 http://bbs.chinaunix.net/images/common/back.gif
数据抽出来是是YYYY/MM/DD的格式的。
如果我在程序里把日期弄成"YYYY/MM/DD"是肯定不会错的。
但是,我需要的不是这样的解决办法,而且,假如要改成"YYYY/MM/DD"的话,会涉及我很多程序都要改动,这个改动 ...
如果数据库里的日期格式相同的话,那么出现问题的原因只能是在Weblogic (对这个不熟悉,应该是用来解析程序的吧)上,如果不同的版本的Weblogic 对程序解析的结果不一致,那么就可能会有不同的结果.....
页:
[1]