Problem phenomenona MySQL table was created with a field of date type, the default value of 0000-00-00 00:00:00, the query was using preparestatement, the query result is resultset, Removing the date field from the result uses Resultset.getdate ("XXXX"), and the result throws an exception: Java.sql.SQLException:Value ' 0000-00-00 ' can not is represented as Java.sql.Date.
cause of the problemthe default value for date in MySQL is "0000-00-00 00:00:00", but Java.sql.Date thinks it is an illegal value, so the above exception is thrown.
Solution SolutionsAdd a parameter, Zerodatetimebehavior, to the URL of the MySQL connection, which can specify why the value will be converted when such a default value is encountered. There are two scenarios, one of which is conversion to "0001-01-01 00:00:00" and the other for direct conversion to NULL. The corresponding configuration is as follows:
String url = "Jdbc:mysql://localhost:3306/test?zerodatetimebehavior=round"; Convert to "0001-01-01 00:00:00"
String url = "Jdbc:mysql://localhost:3306/test?zerodatetimebehavior=converttonull"; Convert to NULL
MySQL query default time throws exception