← К оглавлению занятия
⚡ Минимум для запоминания
DATE, TIME, DATETIME, TIMESTAMP, YEAR — типы данных.
NOW(), CURDATE(), CURTIME() — текущий момент.
DATE_FORMAT, YEAR, MONTH, DAY, EXTRACT — части даты.
DATE_ADD, DATE_SUB, DATEDIFF — арифметика.
Типы данных
| Тип | Формат | Диапазон |
DATE | YYYY-MM-DD | 1000-01-01 … 9999-12-31 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 … 9999-12-31 23:59:59 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 UTC … 2038-01-19 03:14:07 UTC |
TIME | HH:MM:SS | -838:59:59 … 838:59:59 |
YEAR | YYYY | 1901 … 2155 |
Функции MySQL
| Функция | Описание | Пример |
NOW() | Текущие дата и время | SELECT NOW(); |
CURDATE() | Текущая дата | SELECT CURDATE(); |
CURTIME() | Текущее время | SELECT CURTIME(); |
DATE_FORMAT(date, format) | Форматирование даты | SELECT DATE_FORMAT(NOW(), '%d-%m-%Y'); |
DATEDIFF(date1, date2) | Разница в днях | SELECT DATEDIFF('2024-08-30', '2024-08-25'); |
DATE_ADD(date, INTERVAL n unit) | Прибавить интервал | SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); |
DATE_SUB(date, INTERVAL n unit) | Вычесть интервал | SELECT DATE_SUB(NOW(), INTERVAL 90 DAY); |
EXTRACT(unit FROM date) | Извлечь часть даты | SELECT EXTRACT(YEAR FROM NOW()); |
YEAR(date) | Год | SELECT YEAR(order_date); |
MONTH(date) | Месяц | SELECT MONTH(order_date); |
DAY(date) | День | SELECT DAY(order_date); |
TIME_TO_SEC(time) | Время в секунды | SELECT TIME_TO_SEC('02:30:00'); |
SEC_TO_TIME(seconds) | Секунды во время | SELECT SEC_TO_TIME(9000); |
| Спецификатор | Значение | Пример |
%Y | Год четырьмя цифрами | 2024 |
%y | Год двумя цифрами | 24 |
%m | Месяц числом (01–12) | 08 |
%c | Месяц числом (1–12) | 8 |
%d | День месяца (01–31) | 30 |
%e | День месяца (1–31) | 30 |
%H | Часы 24-часового формата (00–23) | 14 |
%i | Минуты (00–59) | 05 |
%s | Секунды (00–59) | 09 |
%W | День недели полностью | Friday |
%a | День недели коротко | Fri |
MySQL ↔ PostgreSQL
| Операция | MySQL | PostgreSQL |
| Текущая дата/время | NOW() | NOW(), CURRENT_TIMESTAMP |
| Текущая дата | CURDATE() | CURRENT_DATE |
| Текущее время | CURTIME() | CURRENT_TIME |
| Разница в днях | DATEDIFF(d1, d2) | DATE_PART('day', d1 - d2) |
| Добавить интервал | DATE_ADD(d, INTERVAL 7 DAY) | d + INTERVAL '7 days' |
| Вычесть интервал | DATE_SUB(d, INTERVAL 7 DAY) | d - INTERVAL '7 days' |
| Извлечь год | YEAR(d) | EXTRACT(YEAR FROM d) |
| Время в секунды | TIME_TO_SEC(t) | EXTRACT(EPOCH FROM t) |
Полный справочник
→ Справочник SQL