Maison >base de données >tutoriel mysql >Comment puis-je comparer correctement les valeurs DATETIME et DATE dans SQL Server ?
Comparaison de Datetime avec Date dans SQL Server
Lors de la comparaison d'une valeur datetime avec uniquement une date, le résultat peut être inattendu. En effet, le type de données datetime inclut à la fois des composants de date et d’heure. Par exemple, si vous avez une table utilisateur avec une colonne DateCreated de type datetime, la requête suivante :
Select * from [User] U where U.DateCreated = '2014-02-07'
ne renverra aucun enregistrement, même si l'utilisateur a été créé le 07/02/2014 à 12 heures. :30:47.220.
Pour comparer avec précision une date/heure avec seulement une date, utilisez ce qui suit method :
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
Cette requête est SARGable, ce qui signifie qu'elle peut utiliser un index sur la colonne DateCreated.
Pourquoi ne pas utiliser les fonctions ?
Il peut être tentant d'utiliser des fonctions comme CONVERT pour extraire le composant date du datetime. Cependant, cela n'est pas recommandé. Utilisation de fonctions dans la clause WHERE ou les conditions de jointure :
Éviter BETWEEN
BETWEEN doit également être évité lorsque traitant des plages de dates et d’heures. Utilisez plutôt le formulaire suivant :
WHERE col >= '20120101' AND col < '20120201'
Ce formulaire est compatible avec tous les types de données et précisions, quelle que soit la partie temporelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!