Learnly
SQL для аналитиков/Глава 5/Урок 2

Текст, числа и даты в условиях

Текст, числа и даты в условиях

Условия WHERE ведут себя немного по-разному в зависимости от типа данных. Разберём каждый.

Числа

Числа пишутся без кавычек:

WHERE age = 25
WHERE price > 1000
WHERE quantity != 0
WHERE score BETWEEN 60 AND 100

BETWEEN, удобный способ задать диапазон (включительно):

-- Эквивалентно: WHERE price >= 1000 AND price <= 5000
WHERE price BETWEEN 1000 AND 5000

Текст

Текст всегда в одинарных кавычках:

WHERE city = 'Москва'
WHERE status = 'completed'
WHERE category != 'архив'

Регистр важен в PostgreSQL: 'Москва' и 'москва', разные строки.

Для поиска без учёта регистра:

WHERE LOWER(city) = 'москва'
-- или
WHERE city ILIKE 'москва'

Даты

Даты пишутся в кавычках в формате YYYY-MM-DD:

-- Конкретная дата
WHERE created_at = '2024-01-15'

-- После даты
WHERE created_at >= '2024-01-01'

-- Диапазон дат
WHERE created_at BETWEEN '2024-01-01' AND '2024-01-31'

-- За последние 30 дней
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'

-- Текущий год
WHERE EXTRACT(YEAR FROM created_at) = 2024

Работа с частями даты

-- Только заказы за январь
WHERE EXTRACT(MONTH FROM created_at) = 1

-- Только в 2024 году
WHERE DATE_TRUNC('year', created_at) = '2024-01-01'

-- День недели (1=понедельник, 7=воскресенье)
WHERE EXTRACT(DOW FROM created_at) IN (6, 7)  -- выходные

Практический пример

-- Активные пользователи из Москвы, зарегистрированные в 2024
SELECT name, email
FROM users
WHERE city = 'Москва'
  AND is_active = true
  AND created_at >= '2024-01-01';

💡 Главная мысль: Текст, в одинарных кавычках, числа, без, даты, в кавычках формата YYYY-MM-DD. BETWEEN удобен для диапазонов, CURRENT_DATE, для "сегодня".