MySQL – 日付関連の方針2

SQLを設計、実装する時に日付が条件に入ったりすることがよくあります。その時の方針は何があるかをメモしていきたいと思います。

課題

SELECT * FROM TABLE WHERE CURRENT _DATE < DATE COL

上記のSQLが詳細データを取得するSQLである場合、クライアントのリクエストした日付とSQL実行時のCURRENT_DATEが違う可能性があります。(23:59:59にリクエストをした場合)

なので、クライアントからリクエストした日付を使うのか、サーバーの日付を利用するのかを方針を決めた方が良いでしょう。

なお、ビジネスロジックの処理でいくつかURRENT_DATEを利用しているSQLが存在する場合も取得対象が変わる可能性がありそうですね。

サーバー(JAVAなど)でシステム日付を取得してSQLを実行するか、SQLでCURRENT_DATEを使うのかも決めた方が良さそうです。

終わりに

SQLの日付関連の方針はめんどくさいと言われましたが、

自分は今まで気を付けずにやってきたと思いました。言われてみると確かに!なるほど!となるものにそこまで考えてなかったです。

これからはちゃんと考えながら使わないとですね!

コメントを残す