Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL entre não inclusivo


É é inclusivo. Você está comparando datetimes com datas. A segunda data é interpretada como meia-noite quando o dia começa .

Uma maneira de corrigir isso é:
SELECT *
FROM Cases
WHERE cast(created_at as date) BETWEEN '2013-05-01' AND '2013-05-01'

Outra maneira de corrigi-lo é com comparações binárias explícitas
SELECT *
FROM Cases
WHERE created_at >= '2013-05-01' AND created_at < '2013-05-02'

Aaron Bertrand tem uma longa entrada no blog sobre datas (aqui), onde discute esta e outras questões de datas.