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
Freigeben: 2025-01-04 12:17:35
Original
602 Leute haben es durchsucht

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'
Nach dem Login kopieren

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')
Nach dem Login kopieren

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'
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage