Optimisation des données DateHeure : Suppression du composant Time dans SQL Server
Le défi :
Travailler avec des champs datetime
nécessite souvent d'isoler la partie date, à l'exclusion de l'heure. Cet article explore la méthode la plus efficace pour cette tâche SQL Server courante.
Approche recommandée :
Après avoir comparé différentes techniques, la solution la plus efficace et la plus flexible est :
<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
Analyse des performances :
Cette méthode démontre systématiquement des performances supérieures, en particulier avec de grands ensembles de données. Sa flexibilité inhérente s'étend au calcul d'autres valeurs liées à la date (par exemple, déterminer le premier jour du mois).
Méthodes alternatives et limites :
La conversion en varchar
à l'aide de CONVERT(char(11), GETDATE(), 113)
offre des performances acceptables dans certains cas, mais comporte des risques potentiels. Des incohérences de langue/format de date peuvent survenir en raison de la conversion varchar
. De plus, cette méthode n'a pas l'adaptabilité de l'approche DATEADD
/DATEDIFF
.
SQL Server 2008 et au-delà :
SQL Server 2008 et les versions ultérieures offrent une alternative simplifiée : la diffusion directe vers date
. Par exemple : CAST(GETDATE() AS DATE)
. Cela simplifie considérablement le processus.
Considérations sur l'indexation et les performances :
L'utilisation de fonctions ou d'opérations CAST
dans les clauses WHERE
peut avoir un impact négatif sur l'utilisation de l'index. Une planification minutieuse est essentielle pour maintenir des performances de requête optimales.
Manipulation datetime2
:
Les mêmes principes s'appliquent à datetime2
(introduit dans SQL Server 2008 et amélioré dans SQL Server 2019). Voici un exemple :
<code class="language-sql">DECLARE @datetime2value datetime2 = '02180912 11:45'; -- Year 0218 for demonstration within datetime2 range DECLARE @datetime2epoch datetime2 = '19000101'; SELECT DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch);</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!