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
Libérer: 2025-01-05 19:52:45
original
180 Les gens l'ont consulté

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'
Copier après la connexion

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')
Copier après la connexion

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'
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal