Heim >Datenbank >MySQL-Tutorial >Wie entferne ich die Zeitkomponente effizient aus DateTime-Feldern in SQL Server?
Herausforderung:
Die Verarbeitung großer SQL Server-Datensätze erfordert oft eine effiziente Entfernung der Zeitkomponente aus Datum/Uhrzeit-Feldern. Zwei gängige Techniken werden häufig eingesetzt:
DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
CAST(CONVERT(CHAR(11), getdate(), 113) AS DATETIME)
Optimaler Ansatz:
Leistungsbenchmarks zeigen durchweg DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
als die effizienteste Methode. Dieser Ansatz:
Moderne SQL Server-Versionen (2008 und höher) bieten überlegene Alternativen:
CAST(getdate() AS DATE)
wandelt Datum/Uhrzeit direkt in einen Datumsdatentyp um, sodass keine Zeitkomponente entfernt werden muss.datetime2
-Felder bleibt die DATEADD
-Methode anwendbar, erfordert jedoch eine Anpassung des Epochenwerts:<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>
Wichtige Überlegungen:
WHERE
-Klauseln kann sich negativ auf die Indexnutzung auswirken. Sorgfältige Überlegung ist erforderlich.CAST(CHAR())
-Methode von der Zeichenkonvertierung führt zu potenziellen Schwachstellen im Zusammenhang mit Spracheinstellungen und Datumsformaten.FLOAT
zum Speichern von Daten aufgrund der internen Darstellung, die für große Datensätze möglicherweise nicht optimal ist.Das obige ist der detaillierte Inhalt vonWie entferne ich die Zeitkomponente effizient aus DateTime-Feldern in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!