Inklusive Bereichsabfrage mit dem „BETWEEN“-Operator von MS SQL Server
Bei Verwendung des „BETWEEN“-Operators von MS SQL Server ist es wichtig zu verstehen, ob Die Bereichsgrenzen werden in die Auswahlkriterien einbezogen oder ausgeschlossen.
Um die konkrete Frage zu beantworten, müssen die Der Operator „ZWISCHEN“ ist inklusive. Dies bedeutet, dass standardmäßig die als Unter- und Obergrenze angegebenen Werte in die Ergebnismenge einbezogen werden. Im bereitgestellten Beispiel:
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
Die Abfrage wählt alle Zeilen aus, in denen der Wert der Spalte „foo“ zwischen (einschließlich) 5 und 10 liegt.
Dies ist jedoch ein inklusives Verhalten kann bei der Arbeit mit DateTimes eine Einschränkung darstellen. Wenn nur ein Datum angegeben wird, behandelt SQL Server es standardmäßig als Mitternacht dieses Tages. Das heißt, wenn Sie alle Werte innerhalb eines bestimmten Tages erfassen möchten, müssen Sie 3 Millisekunden vom Enddatum abziehen, um zu vermeiden, dass fehlende Daten in die 3 Millisekunden vor Mitternacht fallen.
Zum Beispiel, um alle Werte innerhalb dieses Tages abzurufen Juni 2016 wäre die korrekte Abfrage:
where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')
Dadurch wird sichergestellt, dass Sie alle Werte innerhalb von Juni 2016 erfassen, einschließlich derjenigen, die innerhalb der 3 Millisekunden liegen vor Mitternacht am 30. Juni.
Es ist wichtig zu beachten, dass der „ZWISCHEN“-Operator für die meisten Datentypen zwar inklusive ist, es jedoch Ausnahmen gibt. Beispielsweise wird bei den Datentypen „datetime2“ und „datetimeoffset“ generell empfohlen, die Zeichen „>=" und „<" zu verwenden. Operatoren anstelle von „BETWEEN“, um mögliche Probleme mit der Bereichskürzung zu vermeiden.
Das obige ist der detaillierte Inhalt vonIst der „BETWEEN'-Operator von MS SQL Server inklusiv oder exklusiv?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!