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
Libérer: 2025-01-22 10:57:14
original
757 Les gens l'ont consulté

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

Méthode B :

<code class="language-sql">SELECT CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)</code>
Copier après la connexion

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

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

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