当前位置: 代码迷 >> Informix >> informix11.5 安插日期报错
  详细解决方案

informix11.5 安插日期报错

热度:6486   发布时间:2013-02-26 00:00:00.0
informix11.5 插入日期报错
informix11.5 插入日期报错 
 我用的系统是aix,数据库为informix11.5 。程序是java做的。之前连接不上数据库,后来我在连接字符串中 dburl=jdbc:informix-sqli://192.168.6.155:5000/storec:INFORMIXSERVER=guanz;DB_LOCALE=zh_CN.gb;一个;DB_LOCALE=zh_CN.gb就可以连接了。
但是我做插入时总提示java.sql.SQLException: Invalid month in date.
sql 语句如下:

insert into COREC( CERTID, CARDID, CERTTYPE, CUSTNAME, GENDER, STOREID, SALEDATE, STATUS, TEL, 
CRTUSERID, CRTTIME, SENDSTATUS, ADDRESS, OCCUPATION, EDUCATION, VEHICLE, INCOME, MOBILE, EMAIL, COMPANY, POSTCODE ) values
('2310', '76150995015551062', '1', '杰', '2', '047', '2009-12-09', '2', '', '002582', '2009-12-09 16:24:35',
'0', '', '', '', '', '', '', '', '', '')

其中SALEDATE字段为date类型,'2009-12-09'为这种的之前的7.3的数据库可以插入,换成11.5之前插入不了。'2009 12月 09日'这种的才能插入。
为什么呢?怎能么解决?是不是因为;DB_LOCALE=zh_CN.gb之后还得添加什么参数,请指导。
------解决方案--------------------------------------------------------
不同字符集环境下,默认的时间格式不一样,
针对楼主的问题,请尝试如下方式解决即可
在数据库服务器端,设置如下环境变量(如不行,可以重启服务器)
GL_DATE="%m/%d/%iy"
DATETIME="%iY-%m-%d %H:%M:%S"
export GL_DATE DATETIME
------解决方案--------------------------------------------------------

TO_DATE("2009-12-09 16:24:35", "%Y-%m-%d %H:%M:%S")
/* 格式字符串参考C标准库函数strftime */