SQLException
не идва директно от MySQL, вероятно се задейства от езика на вашия клиент. MySQL просто ще генерира предупреждение, което обикновено можете да игнорирате. Каквото и да е, ALLOW_INVALID_DATES
SQL режимът трябва всъщност направете трика:
Предупреждение:
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)
Без предупреждение:
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)
Редактиране: Ако търсите начин да пренапишете заявката, можете да опитате нещо подобно:
update atable
set adate=NULL
where anum='1'
Разбира се, това изисква този adate
е нула.