何日以下のデータを抽出する時の注意!
に書いてあるのだが、時刻を省略して日付のみを指定すると、時刻のデフォルトの"12:00AM(深夜)"が使用される。
これを知っていないと、例えば、以下のようなデータがあった場合、7月30日より小さいデータを抜こうと思った場合、思わぬ落とし穴にはまる恐れがある。
upddate ---------------- 2005/07/29 11:33 2005/07/30 14:58
データが2件あり、7月30日以前のデータを抜こうと思い、where句に、
where upddate <= '2005/07/30'
と書いたが、実際に抜かれるのは'2005/07/29 11:33'のレコードだけである。
なぜなら、where upddate <= '2005/07/30'は、実際には、
where upddate <= '2005/07/30 00:00'
と指定したのと同じことだからである。
この場合、きちんと7月30日以前のデータを抜きたければ、
where upddate < '2005/08/01'
となる。
もしくは、
datetime 型と smalldatetime 型
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_da-db_9xut.asp
に書いてあるように、
where upddate <= '2005/07/30 23:59:59.999'
としなければならない。
ご注意あれ。