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が使える関数に直そう。

ADDTIME()

SUBTIME()

 両方とも加減算する値が時間式なのが日本人には取っつきにくいけど、エラーでログを汚すよりはよいと割り切ろう。慣れの問題だし。

時:分:秒.マイクロ秒
日数 時:分:秒.マイクロ秒