Maison >base de données >tutoriel mysql >Comment supprimer efficacement l'heure des champs DateTime dans 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!