处理 JDBC 中的日期时间值 0000-00-00 00:00:00
如果我尝试这样做,我得到一个例外(见下文)
resultset.getString("add_date");
对于与包含 DATETIME 值 0000-00-00 00:00:00(DATETIME 的准空值)的 MySQL 数据库的 JDBC 连接,即使我只是尝试将值作为字符串获取,而不是作为对象获取。
我通过做来解决这个问题
SELECT CAST(add_date AS CHAR) as add_date
这有效,但看起来很愚蠢...有没有更好的方法来做到这一点?
我的观点是,我只想要原始的DATETIME字符串,所以我可以按原样自己解析它。
注意:这是0000进来的地方:(来自 http://dev.mysql.com/doc/refman/5.0/en/datetime.html)
非法的 DATETIME、DATE 或 TIMESTAMP 值将转换为相应类型的“零”值('0000-00-00 00:00:00' 或 '0000-00-00')。
具体的例外是这个:
SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP.
SQLState: S1009
VendorError: 0
java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.getTimestampFromString(ResultSetImpl.java:6343)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5670)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5491)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5531)