J'obtiens une exception (voir ci-dessous) si j'essaye de faire
resultset.getString("add_date");
pour une connexion JDBC à une base de données MySQL contenant une valeur DATETIME de 0000-00-00 00:00:00 (la valeur quasi-nulle pour DATETIME), même si j'essaie juste d'obtenir la valeur sous forme de chaîne, pas sous forme de objet.
J'ai contourné ça en faisant
SELECT CAST(add_date AS CHAR) as add_date
qui fonctionne, mais semble idiot ... y a-t-il une meilleure façon de faire cela?
Mon point est que je veux juste la chaîne DATETIME brute, donc je peux l'analyser moi-même tel quel .
note: voici où le 0000 entre en jeu: (à partir de http://dev.mysql.com/doc/refman/5.0/en/datetime.html )
Les valeurs DATETIME, DATE ou TIMESTAMP illégales sont converties en la valeur «zéro» du type approprié («0000-00-00 00:00:00» ou «0000-00-00»).
L'exception spécifique est celle-ci:
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)