Hành vi bạn thấy ngụ ý với tôi rằng bạn đang chạy trong một SQL_MODE
nghiêm ngặt (đó là một ý kiến hay trong BTW nói chung).
Bạn có thể đạt được điều mình muốn bằng cách đặt SQL_MODE
ít nghiêm ngặt hơn cho phiên của bạn.
Đây là ví dụ hiển thị CREATE TABLE
của bạn câu lệnh không thành công trong MySQL 5.7 với STRICT_ALL_TABLES
nhưng sẽ thành công khi tôi loại bỏ hạn chế đó:
mysql> select @@session.sql_mode;
+--------------------+
| @@session.sql_mode |
+--------------------+
| STRICT_ALL_TABLES |
+--------------------+
1 row in set (0.00 sec)
mysql> CREATE TABLE myTable AS select date(str_to_date("XXXX","%d-%M-%Y %H:%i:%S"));
ERROR 1411 (HY000): Incorrect datetime value: 'XXXX' for function str_to_date
mysql> set session sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE myTable AS select date(str_to_date("XXXX","%d-%M-%Y %H:%i:%S"));
Query OK, 1 row affected, 1 warning (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 1
mysql> select * from myTable;
+-----------------------------------------------+
| date(str_to_date("XXXX","%d-%M-%Y %H:%i:%S")) |
+-----------------------------------------------+
| NULL |
+-----------------------------------------------+
1 row in set (0.01 sec)