Оператор BETWEEN
дает возможность указать диапазон значений для выборки из БД. Он работает вместе с оператором WHERE (также ознакомьтесь в том посте с оператором AND).
В данном посте для простоты будет использоваться не локальная база данных, а взятая тут. В поле SQL Statement вы можете копировать код из данного поста и сразу смотреть результат.
BETWEEN SQL
Начнем с примера для получения товаров из таблицы Products с ценами в диапазоне:
SELECT
ProductName, Unit, Price
FROM Products
WHERE Price BETWEEN 10 AND 13
Указываем какие поля нам нужно выбрать из таблицы Products и указываем, что значение в колонке Price должно быть между 10 и 13. Ниже результат выполнения данного запроса:
![](https://web-dev.guru/wp-content/uploads/2023/02/MySQL-Between-price-range-1024x371.png)
Этот оператор будет соответствовать такому запросу:
SELECT
ProductName, Unit, Price
FROM Products
WHERE Price >= 10 AND Price <= 13
Какой вариант использовать — решать Вам.
BETWEEN DATES
Его также можно использовать для поиска в диапазоне дат. Например, возьмем таблицу Emloyees, у каждого сотрудника указана дата рождения. Давайте получим всех сотрудников, которые родились в январе, феврале или марте:
SELECT LastName, FirstName, BirthDate
FROM Employees
WHERE MONTH(BirthDate) BETWEEN 1 AND 3
Результат:
![](https://web-dev.guru/wp-content/uploads/2023/02/Between-month-mySQL-1024x183.png)
Примечание. MONTH
— это функция доступная в MySQL и SQL SERVER, поэтому она может не работать в других БД. Перед использованием ознакомьтесь с официальной документацией.
Также на примере таблицы Orders выберем заказы за январь 1998 года:
SELECT *
FROM Orders
WHERE OrderDate BETWEEN '1998-01-01' AND '1998-01-31'
NOT BETWEEN
Данный оператор работает как отрицание, т.е. вы можете указать из какого диапазона вам не нужны данные:
SELECT *
FROM Orders
WHERE OrderDate NOT BETWEEN '1998-01-01' AND '1998-01-31'
Данные запрос вернет все заказы кроме января 1998г.