カラムの型を確認する
SQLで日付比較をするときカラムがDate型でも、’2023/01/01’ というような文字列で渡していないだろうか?
SELECT * FROM TABLE WHERE DATE BETWEEN '2023/01/01' AND '2023/12/31'
となるようなSQLだとうまく条件に当てはまらない日付がでることもある。
ほとんどのDBでは、カラムに対して、値が自動的に型変換される。
この場合、渡した’2023/01/01’が日付型に変換されるだろう。
0が抜けていたり、全角になっていたり、うまく日付型に変換できないときがあるかもしれない。
カラムが日付型なら、値となる日付も’2023-01-01’として、渡すべきである。
そのうえで明示的に型を変換する
SELECT * FROM TABLE CONVERT(date,DATE) > '2023-01-01'
SELECT * FROM TABLE DATE > cast('2023-01-01' as date)
などである。
Nullや空判定もきちんとする
また、空やNULLは日付比較できないため、条件に当てはまる場合がある。
その場合は、カラムのNULLや空判定をしなければならない。
WHERE ISNULL(DATE,'') <> ''
このような条件を付ければ、空やNULLのカラムは出てこない。