Heim >Datenbank >MySQL-Tutorial >Wie entferne ich die Zeit effizient aus DateTime-Feldern in SQL Server?
SQL Server: Zeit effizient aus DateTime-Daten entfernen
Bei der Arbeit mit datetime
-Feldern in SQL Server muss häufig die Datumskomponente isoliert und die Uhrzeit verworfen werden. In diesem Artikel werden zwei gängige Techniken verglichen: DATEADD
/DATEDIFF
und Casting in char
, wobei ihre Leistungsmerkmale analysiert werden.
Methodenvergleich
Der DATEADD
/DATEDIFF
Ansatz:
<code class="language-sql">a) SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
Dies nutzt geschickt DATEDIFF
, um die Differenz in Tagen zur Epoche (01.01.1900) zu berechnen und dann DATEADD
das Datum ohne die Zeitkomponente zu rekonstruieren.
Alternativ: Casting auf char
:
<code class="language-sql">b) SELECT CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)</code>
Dadurch wird datetime
in eine Zeichenfolge umgewandelt (die nur das Datum anzeigt) und dann zurück in datetime
.
Leistungsanalyse
Tests haben ergeben, dass Methode (a) – DATEADD
/DATEDIFF
– im Allgemeinen weniger CPU-Ressourcen verbraucht, insbesondere bei großen Datensätzen. Allerdings ist es anfällig für potenzielle Probleme im Zusammenhang mit Inkonsistenzen in der Sprache und Datumsformatierung.
Methode (b) – Casting – überträgt aufgrund der zwischenzeitlichen char
Konvertierung möglicherweise etwas mehr Daten, aber dieser Mehraufwand ist normalerweise weniger wirkungsvoll als die potenziellen Leistungssteigerungen von (a).
Weitere Überlegungen
Seit SQL Server 2008 ist eine direktere Methode verfügbar: direkte Umwandlung in den DATE
Datentyp.
Empfehlungen
Beide Methoden erzielen das gewünschte Ergebnis, die optimale Wahl hängt jedoch vom Kontext Ihrer Anwendung ab. Für eine bessere Leistung, insbesondere bei großen Datensätzen, wird normalerweise DATEADD
/DATEDIFF
(Methode a) bevorzugt. Wenn die Indizierung der Spalte datetime
von entscheidender Bedeutung ist, sollten Sie eine Umwandlung in DATE
in Betracht ziehen oder sicherstellen, dass die Zeitkomponente keinen Einfluss auf die Indexnutzung hat.
Das obige ist der detaillierte Inhalt vonWie entferne ich die Zeit effizient aus DateTime-Feldern in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!