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の日付関連の方針はめんどくさいと言われましたが、
自分は今まで気を付けずにやってきたと思いました。言われてみると確かに!なるほど!となるものにそこまで考えてなかったです。
これからはちゃんと考えながら使わないとですね!
