Обратите внимание, что это ожидаемое поведение BETWEEN
(См .: http://msdn.microsoft.com/en-us/library/ms187922.aspx)
Из статьи:
BETWEEN возвращает TRUE, если значение test_expression больше или равно значению begin_expression и меньше или равно значению end_expression.
Вы можете изменить выражение end_expression, чтобы получить результаты, отличные от полученных.
Или используйте операторы >=
, <
. Но будьте осторожны, если столбец, с которым вы сравниваете, равен DATETIME
T-SQL преобразует '20110406'
в '2011-04-06 00:00:00.000'
, поэтому учитывайте это при определении операторов, которые нужно использовать.