Heim >Datenbank >MySQL-Tutorial >Wie kann ich DATETIME- und DATE-Werte in SQL Server richtig vergleichen?
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:
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!