Maison >base de données >tutoriel mysql >Comment puis-je comparer correctement les valeurs DATETIME et DATE dans SQL Server ?

Comment puis-je comparer correctement les valeurs DATETIME et DATE dans SQL Server ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-04 17:27:39444parcourir

How Can I Correctly Compare DATETIME and DATE Values in 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 :

  • Supprime la possibilité pour l'optimiseur d'utiliser un index sur le champ
  • Ajoute des calculs inutiles pour chaque ligne de données

É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!

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