Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

L'instruction Datetime BETWEEN ne fonctionne pas dans SQL Server

Avez-vous des heures associées à vos dates ? BETWEEN est inclus, mais lorsque vous convertissez 2013-10-18 en une date, il devient 2013-10-18 00:00:000.00. Tout ce qui est enregistré après la première seconde du 18 ne sera pas affiché en utilisant BETWEEN, sauf si vous incluez une valeur temporelle.

Essayez :

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

si vous voulez rechercher toute la journée du 18. J'ai défini les millisecondes sur 998 car SQL Server extrayait le 19/10/2013 00:00:00:0000 dans la requête.

Les champs SQL DATETIME ont des millisecondes. J'ai donc ajouté 999 au champ.