Maison >base de données >tutoriel mysql >Comment comparer efficacement les valeurs datetime avec uniquement la partie date dans SQL Server ?

Comment comparer efficacement les valeurs datetime avec uniquement la partie date dans SQL Server ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-05 14:41:40978parcourir

How to Efficiently Compare Datetime Values with Only the Date Part in SQL Server?

Comparaison des valeurs Datetime avec uniquement la date dans SQL Server

Lors de l'interrogation d'une base de données pour les enregistrements créés à une date spécifique, il est important de prendre en compte les nature datetime de la colonne. La comparaison d'un champ datetime avec uniquement la partie date à l'aide de l'opérateur égal (par exemple, U.DateCreated = '2014-02-07') peut ne pas renvoyer les résultats attendus.

Solution 1 : Utiliser des plages de dates

Pour comparer avec précision un champ datetime avec uniquement la partie date, utilisez une date range :

Select * from [User] U
where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')

Cette approche garantit que les enregistrements créés le '2014-02-07' sont récupérés, quelle que soit la composante temporelle.

Raison pour éviter les fonctions dans la clause WHERE

Il n'est pas recommandé d'utiliser des fonctions (par exemple, convertir) dans la clause WHERE pour deux principaux raisons :

  1. Perte d'optimisation de l'index : Les fonctions sur les données peuvent empêcher l'optimiseur d'utiliser les index, ce qui entraîne des requêtes plus lentes.
  2. Surcharge de calcul élevée : Les fonctions peuvent introduire une surcharge de calcul importante lorsqu'elles sont appliquées à de grandes ensembles de données.

Bonnes pratiques pour les plages de dates

Pour des performances et une précision optimales lors de l'interrogation de plages de dates et d'heures, il est recommandé d'utiliser le format suivant :

WHERE col >= '20120101' AND col < '20120201'

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