No.387
【MySQL】Incorrect datetime value エラー
日付時刻の加減算結果は正しいのにエラーが出る…
DATE_ADD()
やDATE_SUB()
コマンドを使ったSQLを実行すると下記のようなエラーが出ることがある。
mysql> select * from xxx where DATE_SUB('aaa', interval 1 second) <= '2020-01-01 23:59:59';
Empty set, 1 warning (0.00 sec)
詳しく見るためにshow warning
してみると…
mysql> show warnings;
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Incorrect datetime value: 'aaa' |
+---------+------+-----------------------------------------------+
1 row in set (0.00 sec)
原因だが、DATE_ADD()
やDATE_SUB()
は本来date
型を扱う関数なので、datetime
型を使ったことでエラーを表示している。
結果は正しいのになぜ…
まあ、気を取り直してdatetime
が使える関数に直そう。
両方とも加減算する値が時間式
なのが日本人には取っつきにくいけど、エラーでログを汚すよりはよいと割り切ろう。慣れの問題だし。
時:分:秒.マイクロ秒
日数 時:分:秒.マイクロ秒