はじめに
WordPressのカスタムフィールドで扱う日付形式を変更する必要がありました。
現在は年月日が一続きになっている、yyyymmdd
という形式でした。
システムの変更に伴い、ソートや比較のやりやすい、Y-m-d
形式に統一することになりました。
この変更をSQLで行いました。
現在と目標
WordPressのカスタムフィールドに入っているデータを確認します。
select *, DATE(meta_value) from wp_postmeta
where meta_key = 'openday'
and DATE(meta_value) is not null

where DATE(meta_value) is not null
とすることで不正な値をフィルタできます。
UPDATE
これをUPDATE文にかけます。
update tm_postmeta
set meta_value = DATE(meta_value)
where meta_key = 'openday'
and DATE(meta_value) is not null;
うまくいきました。
その他
作業はIntelliJ (PHPStorm)のDatabaseツール(?)にて行っていたのですが、[22001][1292] Data truncation: Incorrect datetime value: '1'
というエラーが出てしまってうまく更新できませんでした。
SELECTはうまく通りますがUPDATEが通りません。

調べてみたところsql_modeを変更すると良い、という記事もありましたがうまく行きません。ケースが違うようです。
SELECT @@GLOBAL.sql_mode;
set @@global.sql_mode=NO_ENGINE_SUBSTITUTION;
自分の中の結論として、推測ですがどうやらDatabase接続プラグインの不具合のようです。Java系でよくあるエラーメッセージのようで、ツール側の問題かと思われました。
他のSQLツールで実行したところうまくいきました。