Maison >base de données >tutoriel mysql >Comment comparer correctement les valeurs datetime avec uniquement les dates dans SQL Server ?

Comment comparer correctement les valeurs datetime avec uniquement les dates dans SQL Server ?

DDD
DDDoriginal
2025-01-05 19:52:45141parcourir

How to Correctly Compare Datetime Values with Only Dates in 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 :

  • Ils peuvent empêcher l'optimisation de l'index , ce qui ralentit la requête.
  • Ils introduisent des calculs inutiles pour chaque ligne, potentiellement dégradants performances.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn