Heim >Datenbank >MySQL-Tutorial >Wie vergleiche ich Zeitwerte in SQL Server effizient?

Wie vergleiche ich Zeitwerte in SQL Server effizient?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 08:27:50858Durchsuche

How to Efficiently Compare Time Values in SQL Server?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn