2.3.2. Использование BETWEEN

С помощью BETWEEN ... AND ... (находится в интервале от ... до ...) можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне.

Например, выдать перечень продуктов, в которых значение содержания белка находится в диапазоне от 10 до 50:

| Результат:
--- | ---
    SELECT	Продукт, Белки
    FROM	Продукты
    WHERE 	Белки BETWEEN 10 AND 50;
Продукт | Белки
Майонез | 31.
Сметана | 26.
Молоко | 28.
Морковь | 13.
Лук | 17.

Можно задать и NOT BETWEEN (не принадлежит диапазону между), например:

| Результат:
--- | ---
    SELECT	Продукт, Белки, Жиры
    FROM	Продукты
    WHERE	Белки NOT BETWEEN
                    10 AND 50
    AND	Жиры > 100;
Продукт | Белки | Жиры
Говядина | 189. | 124.
Масло | 60. | 825.
Яйца | 127. | 115.

BETWEEN особенно удобен при работе с данными, задаваемыми интервалами, начало и конец которых расположен в разных столбцах.

Для примера воспользуемся таблицей "минимальных окладов" (табл. 2.1), величина которых непосредственно связана со студенческой стипендией. В этой таблице для текущего значения минимального оклада установлена запредельная дата окончания 9 сентября 9999 года.

Таблица 2.1
Минимальные оклады

Миноклад | Начало | Конец
--- | --- | ---
2250 | 01-01-1993 | 31-03-1993
4275 | 01-04-1993 | 30-06-1993
7740 | 01-07-1993 | 30-11-1993
14620 | 01-12-1993 | 30-06-1994
20500 | 01-07-1994 | 09-09-9999

Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос

    SELECT	Начало, Миноклад
    FROM	Миноклады
    WHERE	Начало BETWEEN '1-9-1993' AND '31-8-1994'

и получить результат:

Начало | Миноклад
--- | ---
01-12-1993 | 14620
01-07-1994 | 20500

Отметим, что при формировании запросов значения дат следует заключать в апострофы, чтобы СУБД не путала их с выражениями и не пыталась вычитать из 31 значение 8, а затем 1994.

Для выявления всех значений минимальных окладов, которые существовали в 1993/94 учебном году, можно сформировать запрос

    SELECT	*
    FROM	Миноклады
    WHERE	Начало	BETWEEN '1-9-1993' AND '31-8-1994'
    OR	Конец 	BETWEEN '1-9-1993' AND '31-8-1994'

Миноклад | Начало | Конец
--- | --- | ---
7740 | 01/07/1993 | 30/11/1993
14620 | 01/12/1993 | 30/06/1994
20500 | 01/07/1994 | 09/09/9999

Наконец, для получения минимального оклада на 15-5-1994:

| Результат:
--- | ---
    SELECT	Миноклад
    FROM	Миноклады
    WHERE	'15-05-1994' BETWEEN Начало AND Конец
Миноклад
14620

2.3.1 | Содержание | 2.3.3