Mysql

MySQL - 截斷不正確的日期時間值

  • March 10, 2021

我需要將一些數據從兩者之間遷移到表中。第一個有一個儲存日期的 varchar(255) 欄位。我想將該日期插入第二個表的時間戳欄位中。

varchar 欄位以這種 ISO 8601 格式儲存值:2020-09-24T15:08:07+02:00。

我使用 STR_TO_DATE 和強制轉換嘗試了不同的轉換,但我總是得到同樣的錯誤:

截斷不正確的日期時間值:‘2020-06-01T09:38:08+02:00’

在選擇值似乎被正確轉換:

SELECT STR_TO_DATE(varcharDate,'%Y-%m-%dT%H:%i:%s') = 2020-06-01 09:38:08

在會推薦

 SELECT CONVERT( '2020-06-01T09:38:08+02:00' , DATETIME)

STR_TO_DATE 可以解決問題,但通常很慢。

您可以使用列名而不是文本來執行這樣的查詢來測試性能

CREATE TABLE t2 (tz TIMESTAMP) SELECT CONVERT( '2020-06-01T09:38:08+02:00' , DATETIME)

您應該使用數據類型創建表,timestamp然後嘗試插入:

create table Timestamp_checking
(col_date timestamp(6) ) ;

0 row(s) affected

insert into Timestamp_checking values ('2020-06-01T09:38:08+02:00') 

1 row(s) affected   0.022 sec

引用自:https://dba.stackexchange.com/questions/286732