Heim >Datenbank >MySQL-Tutorial >Wie werden reine Datumsabfragen korrekt mit DateTime-Feldern in SQL Server abgeglichen?

Wie werden reine Datumsabfragen korrekt mit DateTime-Feldern in SQL Server abgeglichen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-04 12:17:35517Durchsuche

How to Correctly Match Date-Only Queries with DateTime Fields in SQL Server?

Abgleich von reinen Datumsabfragen mit Datums-/Uhrzeitfeldern in SQL Server

Beim Abfragen von Datums-/Uhrzeitfeldern in SQL Server mit reinen Datumswerten ist dies von entscheidender Bedeutung um die Auswirkungen zu verstehen, um genaue Ergebnisse zu gewährleisten.

Im bereitgestellten Beispiel:

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

Wenn der Benutzer am „07.02.2014 12:30:47.220“ erstellt wurde, gibt die Abfrage keine Ergebnisse zurück, da nur genaue Datums- und Uhrzeitwerte verglichen werden.

Empfohlener Ansatz

Um dieses Problem zu beheben und reine Datumswerte genau mit Datum/Uhrzeit abzugleichen Feldern wird empfohlen, den folgenden Ansatz zu verwenden:

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

Diese Abfrage gibt einen Bereich an, der alle Datensätze mit einem Datum/Uhrzeit-Wert von „2014-02-07“ oder später, aber vor „2014-02-08“ umfasst .'

Bedeutung von SARGable-Prädikaten und Vermeidung Funktionen

Es ist wichtig, die Verwendung von Funktionen wie „convert()“ in der where-Klausel zu vermeiden, wenn Datum/Uhrzeit-Werte mit reinen Datumskriterien verglichen werden. Dies kann die Indexnutzung behindern, Abfragen verlangsamen und unnötige Berechnungen verursachen. Stattdessen wird die Abfrageleistung verbessert, indem die Abfrage an die Daten angepasst wird (auch als SARGable-Prädikate bezeichnet).

Best Practices für Datumsbereichsabfragen

Darüber hinaus ist es ratsam, dies zu tun Vermeiden Sie die Verwendung des BETWEEN-Operators beim Abfragen von Datumsbereichen. Verwenden Sie stattdessen das folgende Formular für optimale Ergebnisse:

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

Dieser Ansatz stellt die Kompatibilität mit allen Datentypen und Genauigkeiten sicher und beseitigt potenzielle Probleme mit der Zeitkomponente von Datums-/Uhrzeitwerten.

Das obige ist der detaillierte Inhalt vonWie werden reine Datumsabfragen korrekt mit DateTime-Feldern in SQL Server abgeglichen?. 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