

UPDATE文のWHERE句で日付の比較を行うとincorrect datetime valueが発生してしまいます。以下実行SQLです。

[code]

    UPDATE SHAIN
    SET
      COLUMN1 = COLUMN2
    WHERE
      DATE_FORMAT(NOW(), '%Y%m%d') < DATE_FORMAT(LAST_DAY(TAISHABI), '%Y%m%d')
    
[/code]

SELECT文で同じ条件で実行するとエラーが発生せず、実行されます。  
エラーは、DATETIME型に正しい値を入れてくださいという意味だと思うのですが、  
COLUMN1とCOLUMN2はどちらもVARCHAR型となっており、DATETIME型はwhere句のTAISHABIだけとなります。  
エラーを解消するにはどうすればよいでしょうか。


CC BY-SA 4.0
2021-11-10T05:24:53.543
83538
2023-01-15T05:06:25.730
49028
question
mysql
mysqlでUPDATE文のWHERE句で日付比較を行うとincorrect datetime valueが発生する


`TAISHABI` が `'0000-00-00'` であるようなレコードが存在している状態で、 [`sql_mode` の
`NO_ZERO_DATE`](https://dev.mysql.com/doc/refman/8.0/ja/sql-
mode.html#sqlmode_no_zero_date) を有効化して `update`や`select`を行えば質問文のような状況になります。  
("Incorrect datetime value" のメッセージと共に、エラーとなっている値も出力されていないでしょうか)

この場合は、[`sql_mode` 設定](https://dev.mysql.com/doc/refman/8.0/ja/sql-
mode.html#sql-mode-setting) で `NO_ZERO_DATE` を有効化しなければ `update` も通るでしょう。


CC BY-SA 4.0
2021-11-10T07:08:50.963
83540
2021-11-10T07:08:50.963
2808
83538
answer