在mysql表中有一字段为日期字段,(timestamp 或 datetime都试过),默认值为0000-00-00 00:00:00此时向表中插入一条记录,如果不写入此日期字段任何值,也就是使用他的默认值'0000-00-00 00:00:00'那么在java中获取此记录,无论使用rs.getDate()、rs.getObject()、rs.getTimestamp()、等都报错。
错误信息为:
Value '0000-00-00' can not be represented as java.sql.Timestamp: Value '0000-00-00' can not be represented as java.sql.Timestamp如果向此字段写入一个正常的日期读取出就不会报错.由于此字段为非必须字段,所以如果在用户不选择写入,那么必须写入一个默认值。但现在写入一个默认值0000-00-00 00:00:00 用java就读不出来。为什么呢?由于系统要求统计性,必须使用日期timestamp类型字段。本来一直使用long型就没这问题。各位使用mysql碰到过这个问题吗?我用的是mysql5.0.急!!!啊!
错误信息为:
Value '0000-00-00' can not be represented as java.sql.Timestamp: Value '0000-00-00' can not be represented as java.sql.Timestamp如果向此字段写入一个正常的日期读取出就不会报错.由于此字段为非必须字段,所以如果在用户不选择写入,那么必须写入一个默认值。但现在写入一个默认值0000-00-00 00:00:00 用java就读不出来。为什么呢?由于系统要求统计性,必须使用日期timestamp类型字段。本来一直使用long型就没这问题。各位使用mysql碰到过这个问题吗?我用的是mysql5.0.急!!!啊!
没出过错
还有就是用java.util.Date;这个类来接啊``
你那个java.sql里面的Date好象没有后面的时分秒!
because mysql judged the default 0000-00-00 00.... as null.
所有rs.getxxxx的方法都试过了,就是一读就报错,为什么? 如何解决这个问题?
2. 要么不要向里面写默认为0000....这样的数据
3. 要么使用getString自己分析
mysql里面的timestamp不能设置默认为null2. 要么不要向里面写默认为0000....这样的数据
mysql里面的timestamp默认就是0000-00-00 00:00:00,而且不许为空。不是我手工所设置的。
3. 要么使用getString自己分析
现在使用getXXXX的各种方法都试了,一读就报错,根据取不出。如何解释?
我信誉值低,你得问csdn啊!是他们弄的,我也不太清楚。
that is mysql jdbc's problem,you can try
1.add this to your mysql jdbc url:
zeroDateTimeBehavior=convertToNull
Here is the MySQL reference page for more info:
http://dev.mysql.com/doc/refman/5.0/en/cj-configuration-properties.html
2.use the newest mysql jdbc driver
Definition:
What should happen when the driver encounters DATETIME values that are composed entirely of zeroes (used by MySQL to represent invalid dates)? Valid values are 'exception', 'round' and 'convertToNull'.
Required: No
Default Value : exception
Since Version : 3.1