handling valores DATETIME 0000-00-00 00:00:00 em JDBC
Recebo uma exceção (veja abaixo) se tentar fazer
resultset.getString("add_date");
para uma conexão JDBC com um banco de dados MySQL contendo um valor DATETIME de 0000-00-00 00:00:00 (o valor quase nulo de DATETIME), mesmo que eu esteja apenas tentando obter o valor como string, não como um objeto
Eu contornei isso fazendo
SELECT CAST(add_date AS CHAR) as add_date
que funciona, mas parece bobagem ... existe uma maneira melhor de fazer isso?
Meu argumento é que eu só quero a string DATETIME, para que eu possa analisá-la eu mesmacomo .
Nota é aqui que o 0000 entra: (dehttp: //dev.mysql.com/doc/refman/5.0/en/datetime.htm)
Os valores legais DATETIME, DATE ou TIMESTAMP são convertidos no valor “zero” do tipo apropriado ('0000-00-00 00:00:00' ou '0000-00-00').
A exceção específica é esta:
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)