sql >> Databasteknik >  >> RDS >> Mysql

Det går inte att skapa mysql-tabell på grund av felaktigt datetime-värde ... för funktionen str_to_date

Beteendet du ser antyder för mig att du kör i en strikt SQL_MODE (vilket är en bra idé i allmänhet BTW).

Du kanske kan åstadkomma vad du vill genom att ställa in en mindre strikt SQL_MODE för din session.

Här är ett exempel som visar din CREATE TABLE uttalande misslyckas i MySQL 5.7 med STRICT_ALL_TABLES läge, men lyckas när jag tar bort den begränsningen:

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)


  1. Anslutning misslyckades:Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:JA) från php-funktionen

  2. Hur man aktiverar Event Scheduler när jag öppnar MySQL Server

  3. Kodningsfel vid skrivning av data från excelfil till databas (mysql)

  4. funktion returnerar flera kolumner som en enda kolumn istället för flera kolumner