JavaRush /Курси /SQL SELF /Типи даних для роботи з датою та часом: DATE

Типи даних для роботи з датою та часом: DATE, TIME, TIMESTAMP

SQL SELF
Рівень 15 , Лекція 4
Відкрита

Як часто ти бачив додатки, які працюють з датами та часом? Онлайн-замовлення, розклади, історія змін у базі — все це залежить від правильного зберігання часу. PostgreSQL дає круті інструменти для роботи з такими даними, і, звісно, таблиці з часом — це не страшні таблички з годинами і хвилинами, а чітка структура, яка дозволяє аналізувати та впорядковувати події.

Типи для дати та часу дозволяють:

  • Зберігати тільки дату DATE, тільки час TIME або і те, і інше разом TIMESTAMP.
  • Виконувати операції, такі як додавання днів, обчислення різниці між датами та фільтрація записів за часовими критеріями.
  • Працювати з часовими зонами (але це тема для майбутніх лекцій).

Типи даних: DATE, TIME, TIMESTAMP

Тип даних DATE

Тип DATE призначений для зберігання тільки дати, без часу. Він записує рік, місяць і день. Цей тип корисний, коли:

  • Треба зберегти день народження користувача.
  • Дата події важлива, а час — ні.

Приклад формату: YYYY-MM-DD (рік-місяць-день).

Приклад:

id name - VARCHAR(100) event_date - DATE
1 SQL Workshop 2025-06-15
2 Python 2025-06-17
3 Java Courses 2025-06-25

Тип даних TIME

Тип TIME використовується для зберігання тільки часу. Він корисний, коли:

  • Треба зберегти розклад, наприклад, початок робочого дня.
  • Час має значення, а дата — ні.

Приклад формату: HH:MI:SS (години:хвилини:секунди).

Приклад:

id task_name - VARCHAR(100) start_time - TIME
1 Team Meeting 09:00:00
2 Code Review 11:30:00
3 Client Call 15:00:00

Тип даних TIMESTAMP

TIMESTAMP — це поєднання дати і часу. Він корисний, коли:

  • Треба записати момент часу, наприклад, коли користувач зайшов у систему.
  • Потрібна часова позначка для відстеження змін (логування).

Приклад формату: YYYY-MM-DD HH:MI:SS (рік-місяць-день години:хвилини:секунди).

Приклад:

id action - VARCHAR(100) login_time - TIMESTAMP
1 User Login 2023-10-15 14:30:00
2 File Uploaded 2023-10-15 15:10:00
3 User Logout 2023-10-15 16:45:00

Операції з датою та часом

Тепер, коли ми знаємо, які типи існують, давай розберемося, як з ними працювати. PostgreSQL дає купу вбудованих функцій для виконання операцій з датами і часом.

Витягування частин дати та часу

Якщо у тебе є часова мітка (TIMESTAMP), і ти хочеш витягнути тільки рік, місяць, день або годину, використовуй функцію EXTRACT.

Приклад:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2025-06-15 14:30:00') AS year;
-- Результат: 2025

SELECT EXTRACT(MONTH FROM TIMESTAMP '2025-06-15 14:30:00') AS month;
-- Результат: 06

SELECT EXTRACT(DAY FROM TIMESTAMP '2025-06-15 14:30:00') AS day;
-- Результат: 15

Додавання і віднімання часових інтервалів

Хочеш дізнатися, що буде через тиждень? Або що було вчора? Використовуй операції з інтервалами.

Приклад:

-- Додавання 7 днів до поточної дати
SELECT CURRENT_DATE + INTERVAL '7 days' AS next_week;

-- Віднімання 1 місяця
SELECT CURRENT_DATE - INTERVAL '1 month' AS last_month;

Порівняння дат

Як дізнатися, що подія вже настала? Легше, ніж знайти баг у коді — просто порівняй значення.

Приклад:

SELECT event_date
FROM events
WHERE event_date < CURRENT_DATE;
-- Вибираємо всі події в минулому

Більше про функції роботи з часом і датою ти дізнаєшся в наступних лекціях. Поки просто запам’ятай, що такі типи є — цього вистачить.

Проблеми часових зон і стандарт часу

Хоч у цій лекції ми ще не будемо занурюватися у деталі про часові зони, важливо згадати, що PostgreSQL підтримує тип TIMESTAMPTZ (мітка часу з урахуванням часової зони). Наприклад, 2023-10-15 14:30:00+02 показує, що це час для часового поясу UTC+2.

Ми обов’язково розберемо цю тему на курсі, але трохи пізніше :P

Приклад

Тепер час перевірити на практиці наші нові знання. Створимо таблицю, яка буде зберігати розклад занять студентів.

id subject_name class_date - DATE start_time - TIME end_time - TIME created_at - TIMESTAMP
1 Mathematics 2023-10-16 09:00:00 10:30:00 2023-10-12 14:00:00
2 Physics 2023-10-16 11:00:00 12:30:00 2023-10-12 14:00:00
3 Chemistry 2023-10-17 09:00:00 10:30:00 2023-10-12 14:01:00
4 Literature 2023-10-17 11:00:00 12:30:00 2023-10-12 14:01:00
5 Computer Science 2023-10-18 10:00:00 11:30:00 2023-10-12 14:02:00

Через пару лекцій ти вже будеш створювати такі таблиці в базі за допомогою SQL-запитів. А поки просто милуємось :)

Типові помилки

Формат дати та часу: при вставці даних важливо дотримуватися правильного формату: YYYY-MM-DD для дат і HH:MI:SS для часу. PostgreSQL може не зрозуміти, якщо ти спробуєш вставити дату як "15/10/2023".

Невідповідність типів даних: спроба записати текстове значення у поле типу DATE призведе до помилки.

Помилки часових інтервалів: якщо ти додаєш, наприклад, 30 днів до лютого, PostgreSQL коректно це обробить, але дата може вже бути в березні.

Тепер ти знайомий з типами даних для роботи з датою та часом у PostgreSQL. У реальних проєктах це допомагає обробляти розклади, логувати події або відстежувати важливі штуки в системі!

1
Опитування
Числові типи даних, рівень 15, лекція 4
Недоступний
Числові типи даних
Числові типи даних
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ