Maison >base de données >tutoriel mysql >Comment comparer correctement les valeurs datetime avec uniquement les dates dans SQL Server ?
Comparaison des valeurs datetime avec uniquement la date dans SQL Server
Lors de l'interrogation d'enregistrements de base de données avec une comparaison avec une valeur datetime qui inclut uniquement la partie date , il est crucial de comprendre le implications.
Problème
Considérez la requête SQL suivante :
Select * from [User] U where U.DateCreated = '2014-02-07'
Si l'utilisateur a été créé le '2014-02-07 12 : 30:47.220', la requête ne renverra aucune donnée, car la comparaison est effectuée strictement par rapport à la partie date. uniquement.
Solution
Pour comparer correctement une valeur datetime avec uniquement la date, vous devez la mettre entre parenthèses avec le début et la fin de la journée :
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
Cette approche garantit que la requête inclut les enregistrements créés à la date spécifiée, quelle que soit la composante temporelle.
Éviter d'utiliser Fonctions dans la clause WHERE
Il est important d'éviter d'utiliser des fonctions (telles que convert) dans la clause WHERE ou des conditions de jointure pour plusieurs raisons :
Ne vous fiez pas non plus à BETWEEN
Il est généralement recommandé d'éviter d'utiliser l'opérateur BETWEEN pour les comparaisons de date et d'heure. Utilisez plutôt le formulaire :
WHERE col >= '20120101' AND col < '20120201'
Cette approche fonctionne de manière cohérente quel que soit le type ou la précision des données, et elle évite également les pièges potentiels avec BETWEEN.
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!