Heim >Datenbank >MySQL-Tutorial >Wie vergleiche ich Datetime-Werte korrekt nur mit Datumsangaben in SQL Server?
Vergleichen von Datetime-Werten nur mit Datum in SQL Server
Beim Abfragen von Datenbankdatensätzen mit einem Vergleich mit einem Datetime-Wert, der nur den Datumsteil enthält , es ist wichtig, das zu verstehen Auswirkungen.
Problem
Bedenken Sie die folgende SQL-Abfrage:
Select * from [User] U where U.DateCreated = '2014-02-07'
Wenn der Benutzer am 12.02.2014 erstellt wurde: 30:47.220‘, die Abfrage gibt keine Daten zurück, da der Vergleich ausschließlich anhand des Datumsteils durchgeführt wird Nur.
Lösung
Um einen Datetime-Wert korrekt nur mit dem Datum zu vergleichen, sollten Sie ihn mit dem Beginn und dem Ende des Tages einklammern:
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
Dieser Ansatz stellt sicher, dass die Abfrage Datensätze umfasst, die am angegebenen Datum erstellt wurden, unabhängig von der Zeitkomponente.
Vermeiden Sie die Verwendung von Funktionen in der WHERE-Klausel
Es ist aus mehreren Gründen wichtig, die Verwendung von Funktionen (z. B. konvertieren) in der WHERE-Klausel oder Join-Bedingungen zu vermeiden:
Verlassen Sie sich auch nicht auf BETWEEN
Es wird generell empfohlen, die Verwendung des BETWEEN-Operators für Datums- und Zeitvergleiche zu vermeiden. Verwenden Sie stattdessen die Form:
WHERE col >= '20120101' AND col < '20120201'
Dieser Ansatz funktioniert unabhängig vom Datentyp oder der Genauigkeit konsistent und vermeidet auch potenzielle Fallstricke mit BETWEEN.
Das obige ist der detaillierte Inhalt vonWie vergleiche ich Datetime-Werte korrekt nur mit Datumsangaben in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!