Maison >base de données >tutoriel mysql >Comment supprimer efficacement le composant Time des champs DateTime dans SQL Server ?
Défi :
Le traitement de grands ensembles de données SQL Server nécessite souvent la suppression efficace du composant horaire des champs datetime. Deux techniques courantes sont fréquemment utilisées :
DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
CAST(CONVERT(CHAR(11), getdate(), 113) AS DATETIME)
Approche optimale :
Les benchmarks de performances montrent systématiquement DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
comme la méthode la plus efficace. Cette approche :
Les versions modernes de SQL Server (2008 et versions ultérieures) offrent des alternatives supérieures :
CAST(getdate() AS DATE)
convertit directement la date/heure en un type de données de date, éliminant ainsi le besoin de supprimer le composant temporel.datetime2
, la méthode DATEADD
reste applicable, mais nécessite d'ajuster la valeur de l'époque :<code class="language-sql">DECLARE @datetime2value datetime2 = '02180912 11:45'; -- Year 0218 within datetime2 DECLARE @datetime2epoch datetime2 = '19000101'; SELECT DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch);</code>
Considérations clés :
WHERE
peut avoir un impact négatif sur l'utilisation de l'index. Un examen attentif est nécessaire.CAST(CHAR())
à la conversion de caractères introduit des vulnérabilités potentielles liées aux paramètres de langue et aux formats de date.FLOAT
pour stocker des dates en raison de sa représentation interne, qui peut ne pas être optimale pour les grands ensembles de données.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!