Để tránh lỗi giá trị DateTime không chính xác, bạn có thể sử dụng phương thức str_to_date (). Show Như chúng ta đã biết định dạng DateTime là yyyy-mm-dd và nếu bạn thắng chèn trong cùng một định dạng, lỗi sẽ được tạo ra. Hãy cho chúng tôi xem những gì thực sự dẫn đến lỗi này. Đối với điều này, chúng ta hãy tạo một bảng mới. Truy vấn để tạo bảng như sau mysql> create table CorrectDatetimeDemo - > ( - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, - > ArrivalTime datetime - > ); Query OK, 0 rows affected (0.63 sec) Xảy ra khi chúng ta cố gắng bao gồm một ngày có định dạng DateTime không chính xác mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 1 Để tránh lỗi trên, bạn có thể sử dụng str_to_date (). Cú pháp như sau INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s')); Bây giờ, chúng ta hãy chèn DateTime một lần nữa với định dạng chính xác như được hiển thị trong cú pháp trên. Truy vấn như sau mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec) Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh CHỌN. Truy vấn như sau mysql> select *from CorrectDatetimeDemo; Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh CHỌN. +----+---------------------+ | Id | ArrivalTime | +----+---------------------+ | 1 | 2019-02-18 11:15:45 | | 2 | 2017-01-15 10:10:15 | | 3 | 2016-04-12 15:30:35 | +----+---------------------+ 3 rows in set (0.00 sec)
Sau đây là đầu ra
51 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Giá trị DateTime không chính xác 0000-00-00 00:00:00 +0000 Số lỗi cơ sở dữ liệu: 1292 Xin chào mọi người, tôi đang gặp sự cố A với việc nâng cấp máy chủ được thực hiện bởi công ty lưu trữ của tôi và tôi đang cố gắng hiểu những gì đang xảy ra để tôi có thể khắc phục sự cố SEV của tôi gần đây đã được nâng cấp lên phiên bản máy chủ: 5.6.17 và tôi đang gặp lỗi ở khắp nơi nói rằng giá trị DateTime của tôi không chính xác? Nó dường như được thêm +0000 vào cuối DateTime nhưng tôi không chắc tại sao. Điều này được sử dụng để hoạt động hoàn toàn tốt trên 5.5 nhưng một bản nâng cấp gần đây đã ảnh hưởng đến cách thức thời gian của tôi hoạt động
Nếu tôi sửa đổi truy vấn SQL này mà không có +0000 thì nó hoạt động? Nó ảnh hưởng đến bất cứ điều gì là một loại dữ liệu trên bảng của tôi. Có ai khác có một vấn đề tương tự và bây giờ giải pháp là gì để làm cho việc này hoạt động. Hiện tại tôi sẽ phải thay đổi tất cả các chức năng PHP của mình thành tiếng vang ngày/giờ thay vì tôi gọi ngay bây giờ () trên chuỗi truy vấn
Sadikhasan Huy hiệu vàng 18K2078 Huy hiệu bạc118 Huy hiệu đồng20 gold badges78 silver badges118 bronze badges Hỏi ngày 2 tháng 4 năm 2014 lúc 9:21Apr 2, 2014 at 9:21
3 Tôi đã phát hiện ra sau khi nâng cấp lên MySQL 5.7 rằng lỗi này bắt đầu xảy ra trong các tình huống ngẫu nhiên, ngay cả khi tôi không cung cấp một ngày trong truy vấn. Điều này dường như là do các phiên bản trước của các ngày được hỗ trợ của MySQL như mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 15 (theo mặc định) tuy nhiên 5,7.4 đã giới thiệu một số thay đổi đối với cài đặt mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 16. Nếu bạn vẫn có dữ liệu cũ có mặt khi sử dụng phiên bản MySQL mới hơn, thì các lỗi ngẫu nhiên có thể tăng lên. Tôi cần phải thực hiện một truy vấn như thế này để đặt lại tất cả các ngày không về ngày khác.
Ngoài ra, bạn có thể điều chỉnh cài đặt mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 16, mặc dù lưu ý những gì các tài liệu nói về nó:
Đã trả lời ngày 30 tháng 6 năm 2016 lúc 6:38Jun 30, 2016 at 6:38
Simon Eastsimon ĐôngSimon East 52.7K17 Huy hiệu vàng135 Huy hiệu bạc131 Huy hiệu đồng17 gold badges135 silver badges131 bronze badges 3 Ok, vì vậy tôi đã gặp lỗi tương tự. Những gì tôi đã làm để khắc phục nó là sử dụng các dòng mã này để truy vấn cơ sở dữ liệu mà tôi gặp phải:
Dòng mã đầu tiên (chọn) là xem cài đặt hiện tại cho cả 'phiên' và 'toàn cầu'. Khi bạn đặt cả hai thành các chuỗi trống và chạy lại chọn, chúng sẽ không trả lại gì (trống rỗng). Bạn cũng có thể cần sử dụng INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));6 nhưng điều này đã giải quyết vấn đề cho tôi. Về cơ bản, một trong những cài đặt trong đó đã tăng cường cách ngày đi vào cơ sở dữ liệu (tôi đã nhận được nó trong định dạng 'Yyyy-MM-DD HH: MM: SS AM/PM'). Xóa INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));7 và tùy chọn ngày khác không giúp tôi. Trang web của tôi đang hoạt động như bây giờ. Hy vọng rằng điều này sẽ giúp. Đã trả lời ngày 15 tháng 7 năm 2017 lúc 1:26Jul 15, 2017 at 1:26
callmejedcallmejedcallmejed 3513 Huy hiệu bạc4 Huy hiệu đồng3 silver badges4 bronze badges 5 Tôi đã phải đối mặt với vấn đề tương tự. Tôi chạy theo lệnh bên dưới và nó đã làm việc cho tôi.
Đã trả lời ngày 6 tháng 3 năm 2020 lúc 8:15Mar 6, 2020 at 8:15
OmkaromkarOmkar 2.9853 huy hiệu vàng18 Huy hiệu bạc34 Huy hiệu đồng3 gold badges18 silver badges34 bronze badges 2 Câu trả lời ngắn - INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));8 Trong truy vấn của bạn sẽ hoạt động hoàn toàn tốt với cột MySQL INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));9. Câu trả lời dài hơn - Tôi không chắc bạn đã thấy mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)0 hoạt động như thế nào. Cột INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));9 được định dạng là mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)2. Khi nói đến sự khác biệt về thời gian, nó thường là thứ bạn cần xử lý theo chương trình. MySQL chuyển thời gian cục bộ thành UTC và quay lại khi lưu trữ và truy xuất dữ liệu mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)3 - nhưng nó không làm điều này với INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));9 hoặc các cột ngày / giờ khác.
Smar 7.5612 Huy hiệu vàng35 Huy hiệu bạc47 Huy hiệu đồng2 gold badges35 silver badges47 bronze badges Đã trả lời ngày 2 tháng 4 năm 2014 lúc 9:38Apr 2, 2014 at 9:38
RagdataragdataRagdata 1.1487 Huy hiệu bạc16 Huy hiệu đồng7 silver badges16 bronze badges 3 Bản gốc My.cnf đã đặt SQL_Model như sau: mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 10 Tôi đã thử loại bỏ NO_ZERO_IN_DATE và NO_ZERO_DATE nhưng nó không có tác dụng. Nhưng nếu tôi xóa tất cả các điều khoản (trống SQL_Mode) thì lỗi đã biến mất. Tôi đã quay lại SQL_Mode gốc và nghĩ rằng tôi sẽ xóa các điều khoản 1 x 1 để xem cái nào là nguyên nhân. Nỗ lực đầu tiên là loại bỏ strict_trans_tables: mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 11 Không có lỗi. Vì vậy, có vẻ như strict_trans_tables là nguyên nhân. Đã trả lời ngày 26 tháng 8 năm 2018 lúc 17:57Aug 26, 2018 at 17:57
RDVSRDVSRDVS Huy hiệu bạc 9111 silver badge1 bronze badge 1 Số cơ sở dữ liệu giá trị DateTime không chính xác Số cơ sở dữ liệu: 1292Kiểu dữ liệu mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)3 được sử dụng cho các giá trị có chứa cả phần ngày và phần thời gian. mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)3 có phạm vi mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)7 đến mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)8. Loại INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));9 được sử dụng cho các giá trị có chứa cả phần ngày và thời gian. MySQL truy xuất và hiển thị các giá trị INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));9 ở định dạng mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)2. Phạm vi được hỗ trợ là mysql> select *from CorrectDatetimeDemo;2. Bạn nên sử dụng loại này trong: định dạng DateTime mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 12 https://dev.mysql.com/doc/refman/5.0/en/date-and-time-types.html https://dev.mysql.com/doc/refman/5.0/en/datetime.html http://bugs.mysql.com/bug.php?id=70188 Cập nhật: 1Bạn nên xóa mysql> select *from CorrectDatetimeDemo;3 như mã mysql> select *from CorrectDatetimeDemo;4 của bạn và thay đổi mã như mysql> select *from CorrectDatetimeDemo;5 như truy vấn đầy đủ theo sau như: mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 13 Nhìn vào đây: http://sqlfiddle.com/#!2/A2581/23099
Đã trả lời ngày 2 tháng 4 năm 2014 lúc 9:34Apr 2, 2014 at 9:34
jmailjmailjmail 5,8043 Huy hiệu vàng19 Huy hiệu bạc35 Huy hiệu Đồng3 gold badges19 silver badges35 bronze badges 2 Tôi đã phải đối mặt với vấn đề tương tự nhưng khi tôi áp dụng mã được đăng bởi @jedthemarine như được thấy dưới đây, nó đã giải quyết trường hợp của tôi. Trường hợp của tôi là cụ thể
Đã trả lời ngày 3 tháng 4 lúc 2:41Apr 3 at 2:41
Hoàng tử Michaelprince MichaelPrince Michael 853 Huy hiệu vàng3 Huy hiệu bạc10 Huy hiệu đồng3 gold badges3 silver badges10 bronze badges Làm cách nào để khắc phục giá trị DateTime không chính xác?Để tránh lỗi giá trị DateTime không chính xác, bạn có thể sử dụng phương thức str_to_date (). Như chúng ta đã biết định dạng DateTime là yyyy-mm-dd và nếu bạn sẽ không chèn theo cùng một định dạng, lỗi sẽ được tạo ra. Để tránh lỗi trên, bạn có thể sử dụng str_to_date ().use the STR_TO_DATE() method. As we know the datetime format is YYYY-MM-DD and if you won't insert in the same format, the error would get generated. To avoid the above error, you can use STR_TO_DATE().
Định dạng DateTime chính xác cho MySQL là gì?MySQL truy xuất và hiển thị các giá trị DateTime trong định dạng 'yyyy-mm-dd hh: mm: ss'.Phạm vi được hỗ trợ là '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'.Kiểu dữ liệu dấu thời gian được sử dụng cho các giá trị có chứa cả phần ngày và thời gian.YYYY-MM-DD hh:mm:ss ' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59' . The TIMESTAMP data type is used for values that contain both date and time parts.
Làm cách nào để định dạng một ngày trong mysql?Hàm Date_Format () trong MySQL được sử dụng để định dạng một ngày được chỉ định là giá trị định dạng đã cho, tức là ngày sẽ được đưa ra và hàm này sẽ định dạng ngày đó dưới dạng tham số định dạng được chỉ định.Tham số: Hàm này chấp nhận hai tham số như được đưa ra dưới đây: Ngày - Ngày được chỉ định sẽ được định dạng. in MySQL is used to format a specified date as given format value i.e., a date will be given and this function will format that date as specified format parameters. Parameter : This function accepts two parameters as given below : date – Specified date to be formatted.
Chúng ta có thể thay đổi định dạng ngày trong mysql không?MySQL sử dụng định dạng Yyyy-MM-DD để lưu trữ giá trị ngày.Định dạng này được cố định và không thể thay đổi nó.Ví dụ: bạn có thể thích sử dụng định dạng MM-DD-Yyyy nhưng bạn không thể.Thay vào đó, bạn tuân theo định dạng ngày tiêu chuẩn và sử dụng hàm DATE_FORMAT để định dạng ngày theo cách bạn muốn.it is not possible to change it. For example, you may prefer to use mm-dd-yyyy format but you can't. Instead, you follow the standard date format and use the DATE_FORMAT function to format the date the way you want. |