← К оглавлению занятия

💻 Примеры

⚡ Кратко: примеры

  • Текущая дата и время — NOW().
  • Форматирование даты — DATE_FORMAT(order_date, '%d-%m-%Y').
  • Разница между датами — DATEDIFF(shipped_date, order_date).
  • Сдвиг даты — DATE_ADD(CURDATE(), INTERVAL 51 DAY).
  • Извлечение года — YEAR(order_date).

💻 Примеры

Текущая дата и время

SELECT NOW() AS current_datetime;
SELECT CURDATE() AS current_date;
SELECT CURTIME() AS current_time;

Форматирование даты

SELECT id,
       DATE_FORMAT(order_date, '%d-%m-%Y') AS formatted_order_date
FROM orders;

SELECT id,
       DATE_FORMAT(shipped_date, '%d/%m/%Y %H:%i:%s') AS formatted_shipped_date
FROM orders;

Разница между датами в днях

SELECT id,
       DATEDIFF(shipped_date, order_date) AS days_to_ship
FROM orders;

Сдвиг даты на интервал

-- Дата 90 дней назад
SELECT DATE_SUB(CURDATE(), INTERVAL 90 DAY) AS past_date;

-- Дата через 51 день
SELECT DATE_ADD(CURDATE(), INTERVAL 51 DAY) AS future_date;

-- Тот же результат через оператор +
SELECT CURDATE() + INTERVAL 51 DAY AS future_date;

Извлечение частей даты

SELECT id,
       YEAR(order_date) AS order_year,
       MONTH(order_date) AS order_month,
       DAY(order_date) AS order_day
FROM orders;

SELECT EXTRACT(YEAR FROM NOW()) AS current_year;
SELECT EXTRACT(MONTH FROM NOW()) AS current_month;

Преобразование времени в секунды и обратно

SELECT TIME_TO_SEC('02:30:00') AS seconds;
SELECT SEC_TO_TIME(9000) AS time_format;

Преобразование строки в дату

SELECT CAST('2024-08-25' AS DATE) AS converted_date;
SELECT CAST('2024-08-25 14:30:00' AS DATETIME) AS converted_datetime;

Текстовый отчёт с числом и датой

-- Неявное преобразование числа в строку внутри CONCAT
SELECT CONCAT('Total sales: $', 12345.67) AS sales_report;

-- Явное преобразование и форматирование даты
SELECT CONCAT('Клиент с id ', CAST(customer_id AS CHAR),
              ' сделал заказ ', DATE_FORMAT(order_date, '%d.%m.%Y')) AS report
FROM orders;