Heim >Datenbank >MySQL-Tutorial >Wie kann ich DATETIME- und DATE-Werte in SQL Server richtig vergleichen?

Wie kann ich DATETIME- und DATE-Werte in SQL Server richtig vergleichen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-04 17:27:39446Durchsuche

How Can I Correctly Compare DATETIME and DATE Values in SQL Server?

Vergleich von Datetime mit Datum in SQL Server

Beim Vergleich eines Datetime-Werts mit nur einem Datum kann das Ergebnis unerwartet sein. Dies liegt daran, dass der Datentyp „datetime“ sowohl Datums- als auch Uhrzeitkomponenten enthält. Wenn Sie beispielsweise eine Benutzertabelle mit einer DateCreated-Spalte vom Typ datetime haben, gibt die folgende Abfrage:

Select * from [User] U
where  U.DateCreated = '2014-02-07'     

keine Datensätze zurück, obwohl der Benutzer am 07.02.2014 um 12 Uhr erstellt wurde :30:47.220.

Um eine Datumszeit genau mit nur einem Datum zu vergleichen, verwenden Sie Folgendes Methode:

Select * from [User] U 
where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')

Diese Abfrage ist SARGable, was bedeutet, dass sie einen Index für die Spalte „DateCreated“ verwenden kann.

Warum nicht Funktionen verwenden?

Es könnte verlockend sein, Funktionen wie CONVERT zu verwenden, um die Datumskomponente aus der Datumszeit zu extrahieren. Dies wird jedoch nicht empfohlen. Verwendung von Funktionen in der WHERE-Klausel oder Join-Bedingungen:

  • Entfernt die Fähigkeit des Optimierers, einen Index für das Feld zu verwenden
  • Fügt unnötige Berechnungen für jede Datenzeile hinzu

ZWISCHEN vermeiden

ZWISCHEN sollte auch vermieden werden, wenn Umgang mit Datums- und Zeitbereichen. Verwenden Sie stattdessen das folgende Formular:

WHERE col >= '20120101' AND col < '20120201'

Dieses Formular ist mit allen Datentypen und Genauigkeiten kompatibel, unabhängig vom Zeitteil.

Das obige ist der detaillierte Inhalt vonWie kann ich DATETIME- und DATE-Werte in SQL Server richtig 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