Heim >Datenbank >MySQL-Tutorial >Wie kann ich nur den Zeitanteil von DATETIME-Werten in SQL Server effizient vergleichen?

Wie kann ich nur den Zeitanteil von DATETIME-Werten in SQL Server effizient vergleichen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 01:08:09297Durchsuche

How Can I Efficiently Compare Only the Time Portion of DATETIME Values in SQL Server?

Vergleichen von Zeitwerten in SQL Server

Beim Vergleichen von Zeitwerten, die in einem Datum/Uhrzeit-Feld gespeichert sind, ist es wichtig zu überlegen, ob die Datumskomponente vorhanden sein sollte in den Vergleich einbezogen. Im bereitgestellten Szenario möchte der Benutzer nur den Zeitteil ohne das Datum vergleichen.

Die vorgeschlagene Abfrage mithilfe der CONVERT-Funktion zum Konvertieren der Zeitwerte in eine Zeichenfolge funktioniert möglicherweise, ist jedoch möglicherweise ineffizient. Eine optimalere Lösung besteht darin, die interne Gleitkommadarstellung von Datum/Uhrzeit-Werten in SQL Server zu nutzen.

Um einen reinen Zeitvergleich effizient durchzuführen, können wir:

  1. Datum/Uhrzeit konvertieren Werte, die mithilfe der CAST-Funktion in Gleitkommazahlen umgewandelt werden sollen.
  2. Subtrahieren Sie den Bruchteil jeder Gleitkommazahl (Zeitkomponente) mit der MOD Operator.

Zum Beispiel bei zwei Datums-/Uhrzeitwerten @first und @second:

DECLARE @first DATETIME = '2009-04-30 19:47:16.123';
DECLARE @second DATETIME = '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 vergleicht die Zeitwerte direkt, ohne die Datumskomponente einzubeziehen, was eine genaue und effiziente Bereitstellung ermöglicht Ergebnisse.

Das obige ist der detaillierte Inhalt vonWie kann ich nur den Zeitanteil von DATETIME-Werten in SQL Server effizient vergleichen?. 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