← Все вопросы

Как выбрать значения из диапазона в SQL (BETWEEN)?

Задан 2 месяца назад1.1к просмотров2 ответа
8

Хочу выбрать заказы за период с 1 по 31 января, или товары с ценой от 100 до 500. Как выбрать диапазон значений в SQL? Удобнее ли BETWEEN, чем два условия с >= и <=?

2 ответа

12
✓ Принятый ответ — помог автору

Для диапазона есть оператор BETWEEN, который проверяет «значение между a и b включительно»:

SELECT * FROM products
WHERE price BETWEEN 100 AND 500;

Это равносильно:

WHERE price >= 100 AND price <= 500

Границы входят в диапазон — товары по 100 и по 500 попадут в результат. Это главное, что надо запомнить: BETWEEN всегда включает оба конца.

Работает и с датами:

SELECT * FROM orders
WHERE created_at BETWEEN '2026-01-01' AND '2026-01-31';

Важная ловушка с датами и временем. Если в столбце хранится дата вместе со временем (timestamp), то BETWEEN '2026-01-01' AND '2026-01-31' обрежет последний день: '2026-01-31' без времени трактуется как 2026-01-31 00:00:00, и заказы, сделанные днём 31 января, не попадут. Безопаснее писать:

WHERE created_at >= '2026-01-01'
  AND created_at < '2026-02-01';

Нижняя граница «больше или равно», верхняя «строго меньше» начала следующего месяца — так не потеряете ни одной записи. Есть и NOT BETWEEN для исключения диапазона.

4

BETWEEN — это просто синтаксический сахар: он не быстрее и не медленнее, чем >= AND <=, движок их выполняет одинаково. Выбирайте по читаемости. Но из-за коварства с включающими границами и временем многие опытные разработчики для дат вообще предпочитают явные >= и <, чтобы не гадать, входит конец или нет.

Ваш ответ

Войдите, чтобы ответить на вопрос.