Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL zwischen nicht inklusive

Es ist inklusive. Sie vergleichen Datetimes mit Dates. Das zweite Datum wird als Mitternacht interpretiert, wenn der Tag beginnt .

Eine Möglichkeit, dies zu beheben, ist:

SELECT *
FROM Cases
WHERE cast(created_at as date) BETWEEN '2013-05-01' AND '2013-05-01'

Eine andere Möglichkeit, dies zu beheben, sind explizite binäre Vergleiche

SELECT *
FROM Cases
WHERE created_at >= '2013-05-01' AND created_at < '2013-05-02'

Aaron Bertrand hat einen langen Blog-Eintrag zu Verabredungen (hier), in dem er dieses und andere Verabredungsprobleme diskutiert.