Типи даних дати і часу

У 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

Leave a Reply

Your email address will not be published. Required fields are marked *