Heim >Datenbank >MySQL-Tutorial >Wie vergleiche ich Datetime-Werte korrekt nur mit Datumsangaben in SQL Server?

Wie vergleiche ich Datetime-Werte korrekt nur mit Datumsangaben in SQL Server?

DDD
DDDOriginal
2025-01-05 19:52:45141Durchsuche

How to Correctly Compare Datetime Values with Only Dates 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:

  • Sie können die Indexoptimierung verhindern, Dadurch wird die Abfrage langsamer.
  • Sie führen unnötige Berechnungen für jede Zeile ein, was möglicherweise zu einer Verschlechterung führt Leistung.

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!

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