Работа с датами
077 мин
Даты есть почти в любой базе: день рождения, время заказа, дата экзамена. Работа с ними в разных СУБД немного отличается — в этом уроке покажем обе.
Типы
date— только дата:2026-11-14;timestamp(PostgreSQL) /datetime(MySQL) — дата и время:2026-11-14 18:30:00.
Даты можно просто сравнивать — они упорядочиваются как числа:
Сегодняшняя дата
CURRENT_DATE — сегодня, CURRENT_TIMESTAMP (или NOW()) — текущий момент. Работает в обеих СУБД.
Часть даты: EXTRACT
EXTRACT есть в обеих СУБД. Кроме того:
В PostgreSQL есть date_trunc — «обрезает» дату до месяца, недели или дня:
Красивый вывод даты: to_char(ordered_at, 'DD.MM.YYYY').
Прибавить время и посчитать разницу
В PostgreSQL — interval:
Разница двух дат — delivered_at - ordered_at (получится interval), в днях: delivered_at::date - ordered_at::date.
Выбор за целый месяц или год
BETWEEN '2026-10-01' AND '2026-10-31' для столбца со временем потеряет заказы 31 октября после 00:00! Надёжный способ — «меньше начала следующего месяца»:
Выведите first_name и birth_date студентов, родившихся в 2007 году.
Сколько заказов было сделано в сентябре 2026 года? Выведите одно число.
Запомните
- Даты пишутся как
'год-месяц-день'и сравниваются как обычные значения. EXTRACT(YEAR FROM дата)работает в обеих СУБД.- Для периода:
>= начало AND < начало следующего периода.