Maison >base de données >tutoriel mysql >Quelle méthode SQL Server pour tronquer les composants datetime offre de meilleures performances : DATEADD/DATEDIFF ou CAST/CONVERT ?

Quelle méthode SQL Server pour tronquer les composants datetime offre de meilleures performances : DATEADD/DATEDIFF ou CAST/CONVERT ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-22 10:46:11662parcourir

Which SQL Server Method for Truncating Datetime Components Offers Better Performance: DATEADD/DATEDIFF or CAST/CONVERT?

Tronquer la partie heure des champs datetime dans SQL Server : analyse des performances

Lorsqu'il s'agit de dates-heures dans SQL Server, il est souvent nécessaire de tronquer la partie heure. Il existe deux façons courantes d'y parvenir :

  1. DATEADD(DD, DATEDIFF(DD, 0, GETDATE()), 0)
  2. CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)

Bien que les deux méthodes semblent rapides, la question est : quelle méthode est la plus performante, en particulier lorsqu'il s'agit de grands ensembles de données ?

Comparaison des méthodes

Les tests avec un ensemble de données hypothétiques d'un million de lignes montrent que l'approche (a) utilise légèrement moins de CPU que l'approche (b). Cela suggère que DATEADD/DATEDIFF est le moyen préféré pour tronquer la partie heure.

Avantages de DATEADD/DATEDIFF

En plus des considérations de performances, DATEADD/DATEDIFF offre également les avantages suivants :

  • Évitez les problèmes potentiels de langue/format de date liés à VARCHAR.
  • Ne repose pas sur le stockage interne tel que FLOAT.
  • En modifiant la base "0", elle peut être étendue pour calculer le premier jour du mois, demain et d'autres périodes horaires.

Alternatives à SQL Server 2008

Dans SQL Server 2008 et versions ultérieures, vous pouvez utiliser la fonction CAST pour convertir directement en type de données DATE, tronquant ainsi la partie heure. Alternativement, vous pouvez simplement utiliser le type de données DATE depuis le début pour éviter toute troncature.

Optimisation des performances

Il est à noter que si vous utilisez des fonctions ou des transtypages dans la clause WHERE, vous risquez d'invalider l'index. Il est donc important d’examiner attentivement les implications de l’optimisation avant d’utiliser ces méthodes dans ces situations.

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