आप जो व्यवहार देख रहे हैं, उससे मुझे लगता है कि आप एक सख्त SQL_MODE
. में चल रहे हैं (जो सामान्य BTW में एक अच्छा विचार है)।
कम सख्त SQL_MODE
. सेट करके आप जो चाहते हैं उसे पूरा करने में सक्षम हो सकते हैं आपके सत्र के लिए।
यहां एक उदाहरण दिया गया है जो आपका CREATE TABLE
दिखा रहा है MySQL 5.7 में STRICT_ALL_TABLES
के साथ स्टेटमेंट फेल होना मोड, लेकिन एक बार जब मैं उस प्रतिबंध को हटा देता हूं तो सफल होता है:
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)