Mysql
 sql >> Base de données >  >> RDS >> Mysql

Code d'erreur MySQL :1411. Valeur datetime incorrecte :'' pour la fonction str_to_date

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.