← К оглавлению занятия
⚡ Минимум для запоминания
INT, DECIMAL, VARCHAR, BOOLEAN, DATE, DATETIME — основные типы.
CAST(expr AS type) — явное преобразование.
NOW(), CURDATE(), DATE_ADD, DATEDIFF, DATE_FORMAT — функции дат.
- MySQL ↔ PostgreSQL: разный синтаксис интервалов и извлечения частей даты.
Типы данных
| Категория | Тип | Назначение |
| Числовые | INT | целые числа |
DECIMAL(p, s) | точные числа с фиксированной точкой |
FLOAT, DOUBLE | числа с плавающей точкой |
| Строковые | CHAR(n) | строка фиксированной длины |
VARCHAR(n) | строка переменной длины |
TEXT | большой текст |
| Булевы | BOOLEAN | TRUE / FALSE (в MySQL часто TINYINT(1)) |
| Дата и время | DATE | только дата |
TIME | только время |
DATETIME | дата и время |
TIMESTAMP | момент времени с учётом часового пояса |
YEAR | только год |
Функция CAST
CAST(expression AS target_type)
| Целевой тип | Описание |
SIGNED | целое число со знаком |
UNSIGNED | целое число без знака |
DECIMAL | число с фиксированной точкой |
CHAR | строка (в MySQL CAST) |
DATE | дата |
TIME | время |
DATETIME | дата и время |
Функции даты и времени
| Функция | Описание | Пример |
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); |
YEAR(date) | Год | SELECT YEAR(order_date); |
MONTH(date) | Месяц | SELECT MONTH(order_date); |
DAY(date) | День | SELECT DAY(order_date); |
EXTRACT(unit FROM date) | Извлечь часть даты | SELECT EXTRACT(YEAR FROM NOW()); |
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' |
| Извлечь год | YEAR(d) | EXTRACT(YEAR FROM d) |
Полный справочник
→ Справочник SQL