SQLException
không đến trực tiếp từ MySQL, nó có thể được kích hoạt bởi ngôn ngữ máy khách của bạn. MySQL sẽ chỉ tạo ra một cảnh báo mà bạn thường có thể bỏ qua. Dù gì đi nữa, ALLOW_INVALID_DATES
Chế độ SQL nên thực sự làm thủ thuật:
Cảnh báo:
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)
Không có cảnh báo:
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)
Chỉnh sửa: Nếu bạn đang tìm cách viết lại truy vấn, bạn có thể thử một cái gì đó như sau:
update atable
set adate=NULL
where anum='1'
Tất nhiên, điều này yêu cầu adate
là nullable.