Vergleichen der Zeit in SQL Server
Beim Vergleichen von Zeitwerten in einer SQL-Abfrage ist es wichtig, die Zeitkomponente vom Datum zu isolieren. Der angegebene Ansatz, „convert(datetime, ...)“ für Zeichenfolgendarstellungen zu verwenden und dann zu vergleichen, wird aufgrund seiner langsamen Leistung nicht empfohlen.
Eine effizientere Methode besteht darin, die intrinsische Gleitkommadarstellung von SQL Server zu nutzen Termine. Der ganzzahlige Teil repräsentiert das Datum, während der dezimale Teil die Zeit darstellt.
declare @first datetime set @first = '2009-04-30 19:47:16.123' declare @second datetime set @second = '2009-04-10 19:47:16.123' select (cast(@first as float) - floor(cast(@first as float))) - (cast(@second as float) - floor(cast(@second as float))) as Difference
Dieser Ansatz subtrahiert die ganzzahligen Teile des Datums, sodass nur die dezimalen (Zeit-)Teile übrig bleiben. Die resultierende Differenz stellt den Zeitunterschied dar.
Zum Beispiel ein Vergleich von „08:00:00“ und „07:30:00“ in SQL Server mit dieser Methode:
declare @first datetime set @first = '08:00:00.000' declare @second datetime set @second = '07:30:00.000' select (cast(@first as float) - floor(cast(@first as float))) - (cast(@second as float) - floor(cast(@second as float))) as Difference
Ergebnis :
Difference ------------ 0.5
Dies bestätigt, dass „08:00:00“ größer als „07:30:00“ ist 30 Minuten.
Das obige ist der detaillierte Inhalt vonWie vergleiche ich Zeitwerte in SQL Server effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!