Enthält der „Between“-Operator von MS SQL Server Bereichsgrenzen?
Der BETWEEN-Operator in MS SQL Server prüft, wie der Name schon sagt ob ein bestimmter Ausdruck in einen angegebenen Bereich fällt. Es stellt sich jedoch häufig die Frage: Schließt dieser Bereich die Grenzwerte ein oder aus?
Die Antwort lautet, dass BETWEEN ein inklusiver Operator ist, was bedeutet, dass er sowohl die untere als auch die obere Grenze des Bereichs einschließt. Zur Verdeutlichung:
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
Diese Abfrage ruft Zeilen ab, in denen foo >= 5 und <= 10 ist, und schließt effektiv die Werte 5 und 10 in das Ergebnis ein. Dies wird durch die Dokumentation von Microsoft bestätigt:
BETWEEN gibt TRUE zurück, wenn der Wert von test_expression größer oder gleich dem Wert von begin_expression und kleiner oder gleich dem Wert von end_expression ist.
DateTime-Vorbehalte
Bei DateTime-Werten ist eine subtile Überlegung zu beachten. Wenn nur ein Datum angegeben ist, wird es als Mitternacht dieses Tages interpretiert. Um das Fehlen oder Duplizieren von Zeitwerten zu vermeiden, wird empfohlen, einen Bereich zu verwenden, der 3 Millisekunden vor Mitternacht am Enddatum ausschließt.
Um beispielsweise alle DateTime-Werte innerhalb von Juni 2016 abzurufen:
WHERE myDateTime BETWEEN '20160601' AND DATEADD(millisecond, -3, '20160701')
Dadurch wird sichergestellt, dass der Bereich bis zum Monatsende reicht, ohne Werte aus Juli einzubeziehen 1.
datetime2 und datetimeoffset
Für diese Datentypen ist es sicherer, >= und < Operatoren anstelle von BETWEEN. Zum Beispiel:
WHERE myDateTime >= '20160601' AND myDateTime < '20160701'Das obige ist der detaillierte Inhalt vonEnthält der „BETWEEN'-Operator von SQL Server die Start- und Endwerte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!