いい加減、SQLで WHERE x >= a AND x < b と書くのはやめるべき

SQLのWHERE区で日付の条件を書くときに、
WHERE x_date >= '2013-07-01' 
  AND x_date <  '2013-08-01'
のように書くのはやめましょう。
この書き方は非直感的でバグを入れやすいです。

私の経験では、この書き方をする人は高い確率でミスをします。

よりよい書き方

WHERE '2013-07-01' <= x_date AND x_date < '2013-08-01'
この方がぱっと見たときの視認性が高いです。
この書き方のミソは、数値が左から右に行くにしたがって大きくなることです。

一般的に、ひとが時間軸を考えるとき、左から右へ伸びる数直線としてとらえると思います。
小学生のときこういう図を書きましたよね?

ijou_ika.jpg

小 < 中 < 大  と並んでいる方が人の脳にフィットすると思うのです。
実際、このように書く人は不等号の向きを間違えることがほとんどないです。

両方とも境界値を含む場合はBETWEENを

A以上、B以下のような場合では、
WHERE '2013-07-01' <= x_date AND x_date <= '2013-08-01'
と書くよりは、
BETWEENを使って
WHERE x_date BETWEEN '2013-07-01' AND '2013-08-01'
と書いた方がよいですね。

Enjoy 日付指定!
カテゴリ: