L'SQLException
ne vient pas directement de MySQL, il est probablement déclenché par la langue de votre client. MySQL générera simplement un avertissement que vous pouvez normalement ignorer. Quoi qu'il en soit, le ALLOW_INVALID_DATES
Le mode SQL devrait fais vraiment l'affaire :
Avertissement :
mysql> SET @@SESSION.sql_mode='NO_ZERO_DATE,NO_ZERO_IN_DATE';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test (date_created) VALUES (str_to_date('','%m/%d/%Y'));
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+-------------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '' for function str_to_date |
+---------+------+-------------------------------------------------------+
1 row in set (0.00 sec)
Pas d'avertissement :
mysql> SET @@SESSION.sql_mode='ALLOW_INVALID_DATES';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test (date_created) VALUES (str_to_date('','%m/%d/%Y'));
Query OK, 1 row affected (0.03 sec)
Modifier : Si vous cherchez un moyen de réécrire la requête, vous pouvez essayer quelque chose comme ceci :
update atable
set adate=NULL
where anum='1'
Bien sûr, cela nécessite que adate
est nullable.