Maison >base de données >tutoriel mysql >Comment supprimer efficacement la partie heure d'un champ datetime SQL Server ?

Comment supprimer efficacement la partie heure d'un champ datetime SQL Server ?

DDD
DDDoriginal
2025-01-22 10:57:14788parcourir

How to Efficiently Remove the Time Portion from a SQL Server Datetime Field?

Optimisation de l'extraction de dates à partir de SQL Server datetime Champs

Extraire uniquement la partie date d'un champ SQL Server datetime est une tâche courante. Deux approches courantes sont comparées ici pour leur efficacité :

Méthode A :

<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>

Méthode B :

<code class="language-sql">SELECT CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)</code>

Référence de performances

Bien que les deux méthodes soient généralement rapides, la méthode A démontre systématiquement des performances supérieures, en particulier avec des ensembles de données plus volumineux. Les tests sur un ensemble de données d'un million de lignes ont révélé une consommation de processeur considérablement inférieure à l'aide de la méthode A, soulignant son efficacité.

Facteurs supplémentaires

Au-delà de la vitesse, d'autres considérations influencent le choix de la méthode :

  • Formatage des paramètres régionaux et de la date : Le recours de la méthode B à CONVERT à CHAR introduit des problèmes potentiels avec les formats de date spécifiques aux paramètres régionaux.
  • Gestion des types de données : La méthode B utilise FLOAT en interne, ce qui peut avoir des implications en matière de stockage.
  • Extensibilité : La méthode A offre une plus grande flexibilité pour étendre les calculs (par exemple, trouver le premier jour du mois ou le jour suivant).

SQL Server 2008 et versions ultérieures

Pour SQL Server 2008 et versions ultérieures, la fonction CAST offre une alternative simplifiée :

<code class="language-sql">CAST(GETDATE() AS DATE)</code>

Cette approche est efficace et renvoie directement un DATE type de données.

Optimisation de l'index

Essentiellement, l'application de fonctions ou d'opérations CAST dans les clauses WHERE peut entraver l'utilisation de l'index, ce qui a un impact sur les performances des requêtes. Évitez de telles pratiques autant que possible pour maintenir une vitesse de requête optimale.

Recommandation

Compte tenu des performances et de l'adaptabilité, la méthode recommandée pour supprimer le composant temporel des datetime champs dans SQL Server est :

<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>

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