handling DATETIME values 0000-00-00 00:00:00 en JDBC
Obtengo una excepción (ver más abajo) si trato de hacer
resultset.getString("add_date");
para una conexión JDBC a una base de datos MySQL que contiene un valor DATETIME de 0000-00-00 00:00:00 (el valor casi nulo para DATETIME), aunque solo estoy tratando de obtener el valor como cadena, no como un objeto
Lo solucioné haciendo
SELECT CAST(add_date AS CHAR) as add_date
que funciona, pero parece tonto ... ¿hay una mejor manera de hacer esto?
Mi punto es que solo quiero la cadena DATETIME sin procesar, para poder analizarla yo mismocomo e.
Nota aquí es donde entra el 0000: (dehttp: //dev.mysql.com/doc/refman/5.0/en/datetime.htm)
Los valores DATETIME, DATE o TIMESTAMP ilegales se convierten al valor "cero" del tipo apropiado ('0000-00-00 00:00:00' o '0000-00-00').
La excepción específica es 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)