2017-11-07 3 views
1

'2015-01-08T00:00:00 + 00:00'のようなvarcharをdatetimeを使用している別のテーブルに移行したいとします。INSERTステートメントでのCAST()の奇妙な動作

完璧に動作しているようselect文でCAST()関数を使用して:

SELECT CAST(field_value AS datetime) FROM table 

私は2015年1月8日00:00:00取り出します。

しかし、INSERT文を実行しようとするとき、私はこのエラーを取得:

Error Code: 1292. Truncated incorrect datetime value: '2015-01-08T00:00:00+00:00' 

挿入ステートメントに取り組んでいないcast関数のように思えます。私が使用しているinsert文は型である:

INSERT INTO new_table 
    SELECT t.x, t2.x, CAST(t2.field_value AS datetime), t.y 
    FROM table t 
    LEFT JOIN table2 t2 
ON t2.id = t.t2_id 
    WHERE t2.field_value !=''; 

EDITED:

link to sqlfiddle that reproduces the issue

フィドルのSELECT文は私のローカル(ワークベンチとコマンドラインの両方)とは異なる結果を与えます。

は、CONVERT()を使用してみましたと私は同じ問題

どのように私はきちんとNEW_TABLEテーブルに日付文字列を挿入するかを取得しますか?そのためstrictモードの

+1

'INSERT INTO'の後にテーブル名がありません。 – Barmar

+1

LEFT JOINの後に 'ON'節もありません。 – Barmar

+0

関連:https://dba.stackexchange.com/questions/48704/mysql-5-6-datetime-incorrect-datetime-value-2013-08-25t1700000000-with-er – Barmar

答えて

0

:私はSELECTステートメントのすべての警告を取得しなかった理由

mysql error when using cast in update statement

はまだ理解していません。

+0

警告はデフォルトでは表示されません。警告を表示するには、「警告表示」を使用する必要があります。 – Barmar