У MySQL є кілька типів даних, які використовуються для зберігання дати та часу. | |
DATE | Зберігає лише дату (рік, місяць, день). |
DATETIME | Зберігає дату і час (рік, місяць, день, години, хвилини, секунди). |
TIMESTAMP | Також зберігає дату і час, має прив’язку до часового поясу сервера. |
TIME | Зберігає лише час (години, хвилини, секунди). |
YEAR | Зберігає лише рік (у форматі 4 цифри). |
DATE
DATE у MySQL — це тип для зберігання днів, місяців і років без інформації про час. | |
Формат зберігання | ‘YYYY-MM-DD’ |
Діапазон значень | від ‘1000-01-01’ до ‘9999-12-31’ |
Розмір в пам’яті | 3 байти |
Особливості | •Якщо ви введете неправильний формат дати (наприклад, ‘2025-13-49’), MySQL зазвичай згенерує NULL або ‘0000-00-00’ залежно від режиму (sql_mode). •DATE не враховує часові пояси — просто зберігає дату як є. |
Приклад запиту з використанням цього типу:
CREATE TABLE holidays (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
holiday_date DATE NOT NULL
);
INSERT INTO holidays (name, holiday_date)
VALUES
('New Year', '2025-01-01'),
('Christmas', '2025-12-25'),
('Easter', '2025-04-20'),
('Ukrainian Independence Day', '2025-08-24');
SELECT * FROM holidays;
DATETIME
Тип DATETIME у MySQL — це один із типів для зберігання дати та часу разом. Цей тип добре підходить для моментів на часовій шкалі: створення запису, початок події, дедлайни тощо. | |
Формат зберігання | ‘YYYY-MM-DD HH:MM:SS’ |
Діапазон значень | від ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’ |
Розмір в пам’яті | •8 байтів (без точності до мікросекунд) •До 12 байтів (якщо використовується DATETIME(fsp), де fsp — кількість знаків мікросекунд, від 0 до 6) |
Особливості | •Не залежить від часового поясу, на відміну від TIMESTAMP. •Не змінюється автоматично при зміні часової зони сервера. •Добре підходить для бізнес-логіки, де важливо зберігати саме те, що було введено |
Приклад запиту з використанням цього типу:
CREATE TABLE meetings (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100) NOT NULL,
start_time DATETIME NOT NULL
);
INSERT INTO meetings (title, start_time)
VALUES
('Team Meeting', '2025-04-29 09:00:00'),
('Meeting with Client', '2025-04-29 14:30:00');
TIMESTAMP
Тип TIMESTAMP у MySQL дуже схожий на DATETIME, але має кілька важливих особливостей, які роблять його унікальним і корисним у певних випадках — особливо для відстеження часу змін або логування. | |
Формат зберігання | ‘YYYY-MM-DD HH:MM:SS’ |
Діапазон значень | •Від ‘1970-01-01 00:00:01 UTC’ •До ‘2038-01-19 03:14:07 UTC’ (через обмеження UNIX-часу) |
Розмір в пам’яті | •4 байти (без мікросекунд) •до 7 байтів (з мікросекундами) |
Особливості | •Залежить від часового поясу (конвертується в UTC) •Може бути автооновлюваним (DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) |
Приклад запиту з використанням цього типу:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) not null,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO users (username) VALUES ('Jenny');
SELECT * FROM users;
TIME
Тип TIME у MySQL використовується для зберігання часу доби або тривалості. Добре підходить, якщо потрібно фіксувати години, хвилини та секунди — без дати. | |
Формат зберігання | ‘HH:MM:SS’ |
Діапазон значень | •Від ‘-838:59:59’ до ‘838:59:59’ (тобто може зберігати не тільки час доби, а й тривалість, навіть підтримує негативні значення) |
Розмір в пам’яті | •3 байти (без мікросекунд) •до 6 байтів (якщо зберігати мікросекунди, як TIME(6) |
Особливості | •Підтримує негативні значення •Може використовуватися для тривалості перегляду, робочого часу, затримок, таймерів тощо. •Якщо вказати час у вигляді лише HH:MM, він автоматично буде доповнений до HH:MM:00. |
Приклад запиту з використанням цього типу:
CREATE TABLE shiftstime (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_name VARCHAR(100) not null,
start_time TIME NOT NULL,
end_time TIME NOT NULL
);
INSERT INTO shiftstime (employee_name, start_time, end_time)
VALUES
('Jenny', '09:00:00', '17:30:00'),
('Penny', '14:00:00', '22:00:00');
YEAR
Тип YEAR у MySQL — це спеціалізований тип даних для зберігання року. Він добре підходить для випадків, коли потрібно фіксувати тільки рік, наприклад: рік випуску авто, рік народження, рік початку навчання тощо. | |
Формат зберігання | ‘YYYY’ (4 цифри) |
Діапазон значень | •від 1901 до 2155 (а також ‘0000’ — для невідомого року, якщо дозволено) |
Розмір в пам’яті | •1 байт |
Особливості | •Зберігає лише рік, без місяців чи днів |
Приклад запиту з використанням цього типу:
CREATE TABLE cars (
id INT AUTO_INCREMENT PRIMARY KEY,
model VARCHAR(100) not null,
production_year YEAR not null
);
INSERT INTO cars (model, production_year)
VALUES
('Toyota Corolla', 2020),
('Ford Mustang', 2015),
('Dodge Charger', 2020);
Для додаткової візуалізації є відео:
В цьому відео поговоримо про:
00:00 Типи даних дати і часу
00:31 DATE
04:11 DATETIME
07:16 TIMESTAMP
12:17 TIME
15:00 YEAR