Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

L'istruzione Datetime BETWEEN non funziona in SQL Server

Hai orari associati alle tue date? BETWEEN è inclusivo, ma quando converti 2013-10-18 in una data diventa 2013-10-18 00:00:000.00. Tutto ciò che viene registrato dopo il primo secondo del 18 non verrà mostrato utilizzando BETWEEN, a meno che tu non includa un valore di tempo.

Prova:

SELECT 
* 
FROM LOGS 
WHERE CHECK_IN BETWEEN 
    CONVERT(datetime,'2013-10-17') 
    AND CONVERT(datetime,'2013-10-18 23:59:59:998')

se vuoi cercare l'intera giornata del 18. Ho impostato i millisecondi su 998 perché SQL Server stava richiamando 2013-10-19 00:00:00:0000 nella query.

I campi SQL DATETIME hanno millisecondi. Quindi ho aggiunto 999 al campo.