Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Fehlercode:1411. Falscher datetime-Wert:'' für Funktion str_to_date

Die SQLException kommt nicht direkt von MySQL, es wird wahrscheinlich von Ihrer Client-Sprache ausgelöst. MySQL generiert nur eine Warnung, die Sie normalerweise ignorieren können. Wie auch immer, die ALLOW_INVALID_DATES SQL-Modus sollte tatsächlich den Trick machen:

Warnung:

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)

Keine Warnung:

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)

Bearbeiten: Wenn Sie nach einer Möglichkeit suchen, die Abfrage neu zu schreiben, könnten Sie Folgendes versuchen:

update atable 
set adate=NULL
where anum='1'

Dazu ist natürlich adate erforderlich ist nullable.