Troncation datetime SQL Server : meilleures pratiques et méthodes
Supprimer la partie heure d'une valeur datetime est une tâche fréquente dans SQL Server. Ce guide explore diverses techniques, mettant en évidence leurs forces et leurs faiblesses.
L'approche recommandée : tirer parti de la fonction CAST (SQL Server 2008 et versions ultérieures)
Pour SQL Server 2008 et versions ultérieures, la fonction CAST
fournit la solution la plus simple et la plus fiable :
<code class="language-sql">CAST(your_datetime_column AS DATE)</code>
Cette approche est à la fois efficace et conforme aux normes ANSI, garantissant compatibilité et prévisibilité.
La méthode standard (pré-SQL Server 2008)
Avant SQL Server 2008, la fonction DATETIMEADD
était la méthode préférée :
<code class="language-sql">DATEADD(DD, DATEDIFF(DD, 0, getdate()), 0)</code>
Cela calcule la différence en jours par rapport à une date de référence (0) et l'ajoute, supprimant ainsi la composante temporelle.
Une option plus rapide, mais moins fiable
Une alternative plus rapide, bien que moins portable et potentiellement sujette à des modifications dans les futures versions de SQL Server, implique le casting vers et depuis un float :
<code class="language-sql">CAST(FLOOR(CAST(your_datetime_column AS FLOAT)) AS DATETIME)</code>
Cette méthode exploite la représentation binaire interne des valeurs datetime. Cependant, sa dépendance aux détails de mise en œuvre le rend moins robuste.
La méthode à éviter : utiliser CONVERT
Utiliser CONVERT
pour tronquer les dates et heures est généralement déconseillé. Sa dépendance aux conversions de chaînes introduit une inefficacité et des problèmes potentiels liés aux paramètres régionaux :
<code class="language-sql">CAST(CONVERT(CHAR(11), your_datetime_column, 113) AS DATETIME)</code>
Optimisation des performances
La méthode CAST
(disponible depuis SQL Server 2008) est généralement la plus efficace. Cependant, la stratégie la plus efficace consiste à minimiser le besoin de troncature date/heure grâce à une conception minutieuse de la base de données et à une optimisation des requêtes.
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!