SQLab
УчёбаПрактикаЗадачиАренаРейтинг
© 2026 SQLab · Ташкент
SQLab

Учите SQL прямо в браузере — ничего не нужно устанавливать.

Платформа

  • Учёба
  • Практика
  • Задачи
  • Арена
  • Рейтинг

Для кого

  • Студентам
  • Преподавателям
  • Университетам
© 2026 SQLab. Все права защищены.Сделано в Узбекистане для студентов.
УчёбаПрактикаЗадачиАренаРейтинг
0/26

Основы

  • Что такое база данных?
  • Первый SELECT
  • WHERE: отбор нужных строк
  • IN, BETWEEN, LIKE и NULL
  • Сортировка, LIMIT и DISTINCT

Вычисления

  • Выражения, функции и CASE
  • Работа с датами
  • COUNT, SUM, AVG, MIN, MAX
  • GROUP BY и HAVING

Соединение таблиц

  • Ключи и связи
  • INNER JOIN
  • LEFT JOIN и строки без пары
  • Несколько таблиц и self join

Сложные запросы

  • Подзапросы
  • UNION, INTERSECT, EXCEPT
  • WITH: именованные запросы
  • Оконные функции

Создание и изменение таблиц

  • CREATE TABLE: типы и ограничения
  • INSERT, UPDATE, DELETE
  • ALTER, DROP, TRUNCATE
  • Как правильно спроектировать базу

Профессиональный уровень

  • Индексы и EXPLAIN
  • Транзакции и ACID
  • VIEW: сохранённые запросы
  • Функции, процедуры, триггеры
  • Пользователи, права и резервные копии
Учёба/Вычисления

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

077 мин

Даты есть почти в любой базе: день рождения, время заказа, дата экзамена. Работа с ними в разных СУБД немного отличается — в этом уроке покажем обе.

Типы

  • date — только дата: 2026-11-14;
  • timestamp (PostgreSQL) / datetime (MySQL) — дата и время: 2026-11-14 18:30:00.

Даты можно просто сравнивать — они упорядочиваются как числа:

shop· Попробуйте изменить
SELECT id, ordered_at FROM orders WHERE ordered_at >= '2026-10-25' ORDER BY ordered_at;

Сегодняшняя дата

CURRENT_DATE — сегодня, CURRENT_TIMESTAMP (или NOW()) — текущий момент. Работает в обеих СУБД.

shop· Попробуйте изменить
SELECT CURRENT_DATE AS today;

Часть даты: EXTRACT

shop· Попробуйте изменить
SELECT id, ordered_at, EXTRACT(YEAR FROM ordered_at) AS y, EXTRACT(MONTH FROM ordered_at) AS m
FROM orders LIMIT 5;

EXTRACT есть в обеих СУБД. Кроме того:

В PostgreSQL есть date_trunc — «обрезает» дату до месяца, недели или дня:

shop· Попробуйте изменить
SELECT date_trunc('month', ordered_at) AS month, count(*) FROM orders GROUP BY 1 ORDER BY 1 DESC LIMIT 4;

Красивый вывод даты: to_char(ordered_at, 'DD.MM.YYYY').

Прибавить время и посчитать разницу

В PostgreSQL — interval:

shop· Попробуйте изменить
SELECT id, ordered_at, ordered_at + interval '7 days' AS deadline FROM orders LIMIT 3;

Разница двух дат — delivered_at - ordered_at (получится interval), в днях: delivered_at::date - ordered_at::date.

Выбор за целый месяц или год

BETWEEN '2026-10-01' AND '2026-10-31' для столбца со временем потеряет заказы 31 октября после 00:00! Надёжный способ — «меньше начала следующего месяца»:

shop· Попробуйте изменить
SELECT count(*) FROM orders WHERE ordered_at >= '2026-10-01' AND ordered_at < '2026-11-01';
1Упражнение

Выведите first_name и birth_date студентов, родившихся в 2007 году.


2Упражнение

Сколько заказов было сделано в сентябре 2026 года? Выведите одно число.


Запомните

  • Даты пишутся как 'год-месяц-день' и сравниваются как обычные значения.
  • EXTRACT(YEAR FROM дата) работает в обеих СУБД.
  • Для периода: >= начало AND < начало следующего периода.
Предыдущий урокВыражения, функции и CASEСледующий урокCOUNT, SUM, AVG, MIN, MAX

Содержание

  • Типы
  • Сегодняшняя дата
  • Часть даты: EXTRACT
  • Прибавить время и посчитать разницу
  • Выбор за целый месяц или год
  • Запомните
УчёбаПрактикаЗадачиАренаРейтинг

SQLab