Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không thể tạo bảng mysql do giá trị ngày giờ không chính xác ... cho hàm str_to_date

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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi sql:Việc chuyển đổi kiểu dữ liệu varchar thành kiểu dữ liệu datetime dẫn đến giá trị nằm ngoài phạm vi

  2. Chỉ chọn giá trị cuối cùng bằng cách sử dụng nhóm của tại mysql

  3. Làm cách nào để kiểm tra xem một giá trị đã tồn tại hay chưa để tránh trùng lặp?

  4. Sự khác biệt giữa MyISAM và InnoDB là gì?

  5. Lỗi 'Quan hệ không tồn tại' sau khi chuyển sang PostgreSQL