Включает ли BETWEEN границы диапазона в MS SQL Server?

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Оператор BETWEEN в SQL Server действительно включает граничные значения диапазона. Например, выражение column BETWEEN 1 AND 3 вернёт 1, 2 и 3.

Случаи использования DateTime

При работе с типами данных DateTime или DateTime2 важно учитывать границы. Если указать myDate BETWEEN '2023-04-01' AND '2023-04-30', в результат войдут моменты времени с начала 1 апреля до конца 30 апреля. Чтобы не пропустить последнюю секунду дня, не устанавливайте верхнюю границу равной 'последнийдень 23:59:59'.

Учёт миллисекунд с помощью DATEADD

Если требуется высокая точность, например, при регистрации событий до миллисекунд, используйте функцию DATEADD. Установите верхнюю границу следующим образом: DATEADD(millisecond, -3, 'датаконца'), чтобы исключить полночь и включить события за 3 миллисекунды до неё.

SQL
Скопировать код
-- Отнимаем 3 миллисекунды — это действительно просто и эффективно.

Способ упрощения запросов: очистка от времени

Если точное время нерелевантно, его можно игнорировать, что упростит запрос. Вариант myDate >= 'начальнаядата' AND myDate < 'конечнаядата' + 1 позволяет охватить весь интервал дат без учёта времени.

Правила для создания эффективных запросов

Избегайте функций в предложении WHERE

Помните, что использование функций в предложении WHERE может замедлить запрос и сделать индексы неэффективными.

SQL
Скопировать код
-- Используйте индексы разумно, чтобы не утратить их преимущества!

Соблюдайте совпадение типов данных

При использовании BETWEEN важно, чтобы типы данных выражений совпадали. В противном случае это может привести к непредвиденным результатам и снижению производительности.

Тестирование — залог успеха

Не забывайте тестировать свои запросы на правильность результатов, особенно при работе с границами DateTime.

SQL
Скопировать код
-- Тестирование — залог безошибочной работы с данными!

Тонкости использования NOT BETWEEN

Оператор NOT BETWEEN подходит в случаях, когда требуется исключить границы диапазона из результата.

Визуализация

Давайте рассмотрим использование BETWEEN на примере следующих значений:

Markdown
Скопировать код
Значения: [1, 2, 3, 4, 5]
Условие BETWEEN: от 2 до 4 (включительно 🚪🚪)

В итоге мы получим:

Markdown
Скопировать код
Результат: [2, 3, 4]
| 🚪 2 | 🌼 3 | 🌼 4 🚪 |

Таким образом, оператор "BETWEEN" в SQL включает все значения, находящиеся между заданными 'воротами', включая сами 'ворота'.

Полезные материалы

  1. BETWEEN (Transact-SQL) – SQL Server | Microsoft обучение
  2. Оператор SQL BETWEEN
  3. Как избежать использования функций SQL Server в предложении WHERE для повышения производительности
  4. Обсуждение на Stack Overflow
  5. Работа с диапазонами в SQL Server