Maison >base de données >tutoriel mysql >Comment supprimer efficacement l'heure des champs DateTime dans SQL Server ?

Comment supprimer efficacement l'heure des champs DateTime dans SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-22 10:51:10814parcourir

How to Efficiently Remove Time from DateTime Fields in SQL Server?

SQL Server : supprimer efficacement l'heure des données DateTime

Travailler avec des champs datetime dans SQL Server nécessite souvent d'isoler le composant de date, en supprimant l'heure. Cet article compare deux techniques courantes : DATEADD/DATEDIFF et le casting vers char, en analysant leurs caractéristiques de performance.

Comparaison des méthodes

L'approche DATEADD/DATEDIFF :

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

Cela utilise intelligemment DATEDIFF pour calculer la différence en jours par rapport à l'époque (1900-01-01), puis DATEADD pour reconstruire la date sans la composante horaire.

Vous pouvez également diffuser sur char :

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

Cela convertit le datetime en chaîne de caractères (affichant uniquement la date), puis de nouveau en datetime.

Analyse des performances

Les tests révèlent que la méthode (a) – DATEADD/DATEDIFF – consomme généralement moins de ressources CPU, en particulier avec de grands ensembles de données. Cependant, il est sensible à des problèmes potentiels liés aux incohérences de langue et de formatage de la date.

La méthode (b) – casting – peut transférer un peu plus de données en raison de la char conversion intermédiaire, mais cette surcharge a généralement moins d'impact que les gains de performances potentiels de (a).

Autres considérations

Depuis SQL Server 2008, une méthode plus directe est disponible : le casting directement vers le type de données DATE.

Recommandations

Les deux méthodes permettent d'obtenir le résultat souhaité, mais le choix optimal dépend du contexte de votre application. Pour des performances supérieures, en particulier avec de grands ensembles de données, DATEADD/DATEDIFF (méthode a) est généralement préférée. Si l'indexation de la colonne datetime est critique, envisagez de diffuser vers DATE ou de vous assurer que le composant temporel n'affecte pas l'utilisation de l'index.

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