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

Datetime BETWEEN-Anweisung funktioniert nicht in SQL Server

Haben Sie Zeiten, die mit Ihren Dates verbunden sind? BETWEEN ist inklusive, aber wenn Sie 2013-10-18 in ein Datum umwandeln, wird es 2013-10-18 00:00:000,00. Alles, was nach der ersten Sekunde des 18. protokolliert wird, wird nicht mit BETWEEN angezeigt, es sei denn, Sie geben einen Zeitwert an.

Versuchen Sie:

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

wenn Sie den ganzen Tag des 18. suchen möchten. Ich habe Millisekunden auf 998 gesetzt, weil SQL Server 2013-10-19 00:00:00:0000 in die Abfrage gezogen hat.

SQL-DATETIME-Felder haben Millisekunden. Also habe ich 999 zum Feld hinzugefügt.