logo

Функції дати та часу MySQL

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

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

Розуміння типів даних дати та часу MySQL

Під час роботи з датами в MySQL новачкам може бути складно, особливо тому, що формат дати в базі даних повинен відповідати формату вхідних даних під час вставки. У багатьох випадках замість використання простої дати нам може знадобитися зберігати і дату, і час залежно від варіанту використання. Ось де DATETIME і TIMESTAMP типи даних вступають у гру.



MySQL надає такі типи даних для зберігання значень дати та часу:

1. ДАТА :

  • Формат :YYYY-MM-DD
  • Використовується лише для зберігання дати (рік, місяць і день) без часової складової.

2. DATETIME :

  • Формат :YYYY-MM-DD HH:MM:SS
  • Зберігає як дату, так і час, що робить його корисним, коли вам потрібно зафіксувати певний час разом із датою.

3. TIMESTAMP :

  • Формат :YYYY-MM-DD HH:MM:SS
  • Схожий наDATETIMEалеTIMESTAMPтакож включає підтримку часових поясів. Він автоматично оновлюється до поточної позначки часу, коли запис змінюється, що робить його ідеальним для відстеження змін у записах з часом.

4. РІК :

  • Формат :YYYYабоYY
  • Використовується для зберігання лише року, що може бути корисним для програм, де потрібен лише рік, наприклад для відстеження років народження або фінансових років.

Функції дати та часу MySQL

Тепер давайте зануримося в функції дати MySQL, які можна використовувати для ефективного керування та запиту даних дати й часу.

1. NOW() - отримати поточну дату та час

The ЗАРАЗ() функція отримує поточну дату й час у РРРР-ММ-ДД ГГ:МІ:СС формат.

Запит:

SELECT NOW();  

Вихід:

тепер метод виведення зображення' title=

2. CURDATE() – отримати лише поточну дату

Якщо нам потрібна лише поточна дата без часової частини, яку ми можемо використати CURDATE() який повертає дату в YYYY-MM-DD формат.

Запит:

SELECT CURDATE();  

Вихід: 

ВИХІД2' loading='lazy' title=

3. CURTIME() - отримати лише поточний час

Функція CURTIME() повертає поточний час ГГ:МІ:СС формат без дати.

Запит:

SELECT CURTIME();  

Вихід: 

ВИХІД3' loading='lazy' title=

4. DATE() - витягти частину дати зі значення DATETIME

TheDATE()функція витягує лише частину дати з aDATETIMEабоTIMESTAMPзначення, відкидаючи час.

приклад: За столом зв users :

ID Ім'я Час народження
4120Практика1996-09-26 16:44:15.581

Запит:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Вихід:

Ім'я Дата народження
Практика1996-09-26

5. EXTRACT() - Витяг певних частин дати

EXTRACT()використовується для виділення певних частин дати, наприклад дня місяця або року. Ця функція може бути особливо корисною під час аналізу або порівняння різних частин дати. Можна розглянути кілька одиниць, але використовуються лише деякі, наприклад МІКРОСЕКУНДА ДРУГА ХВИЛИНА ГОДИНА ДЕНЬ ТИЖДЕНЬ МІСЯЦЬ ЧВЕРТЬ РІК тощо. І «дата» є дійсним виразом дати.

Синтаксис:

EXTRACT(одиниця З дати);

Запит для вилучення дня:

SELECT Name Extract(DAY FROM   
BirthTime) AS BirthDay FROM Test;

Вихід: 

Ім'я день народження
Практика26

Запит для отримання року:

SELECT Name Extract(YEAR FROM BirthTime)  
AS BirthYear FROM Test;

Вихід: 

довгий рядок java
Ім'я Рік народження
Практика1996 рік

Запит для вилучення секунд:

SELECT Name Extract(SECOND FROM   
BirthTime) AS BirthSecond FROM Test;

Вихід:

Ім'я Народження Друге
Практика581

6. DATE_ADD() - Додавання інтервалів до дати

The DATE_ADD() функція дозволяє додавати проміжки часу (наприклад, дні, місяці, роки) до дати абоDATETIMEзначення.

Синтаксис:

DATE_ADD(тип виразу INTERVAL дати);

приклад: Для наведеної нижче таблиці під назвою " Тест '

ID Ім'я Час народження
4120Практика1996-09-26 16:44:15.581

Запит до Додайте 1 рік до дати

SELECT Name DATE_ADD(BirthTime INTERVAL   
1 YEAR) AS BirthTimeModified FROM Test;

Вихід:

Ім'я BirthTimeModified
Практика1997-09-26 16:44:15.581

Запит на додавання 30 днів до дати

SELECT Name DATE_ADD(BirthTime   
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

Вихід:

Ім'я BirthDayModified
Практика1996-10-26 16:44:15.581

Запит на додавання 4 годин до дати

SELECT Name DATE_ADD(BirthTime INTERVAL  
4 HOUR) AS BirthHourModified FROM Test;

Вихід: 

Ім'я Народження Друге
Практика1996-10-26 20:44:15.581

7. DATEDIFF() – Знайдіть різницю між двома датами

Ця функція повертає кількість днів між двома датами. 

Синтаксис:

DATEDIFF(інтервалдата1 дата2);

інтервал - хвилина/година/місяць/рік тощо

date1 & date2 - вираз дати/часу

Запит до Знайдіть різницю між двома датами

SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;  

Вихід: 

DateDiff

8. DATE_FORMAT() - Формат дати та часу

DATE_FORMAT() дозволяє нам форматувати a ДАТА DATETIME або TIMESTAMP значення в спеціальному форматі за допомогою заповнювачів.

Синтаксис:

DATE_FORMAT(формат дати);

дата є дійсною датою, а формат визначає вихідний формат для дати/часу. Формати, які можна використовувати:

  • %a-Скорочена назва дня тижня (нд-сб)
  • %b-Скорочена назва місяця (січень-грудень)
  • %c-числовий місяць (0-12)
  • %D-День місяця з англійським суфіксом (0-й 1-й 2-й 3-й)
  • %d-числовий день місяця (00-31)
  • %e-числовий день місяця (0-31)
  • %f-мікросекунди (000000-999999)
  • %H-година (00-23)
  • %h-година (01-12)
  • %I-години (01-12)
  • %i-хвилин числові (00-59)
  • %j-день року (001-366)
  • %k-годин (0-23)
  • %l-годин (1-12)
  • %M-назва місяця (січень-грудень)
  • %m-місяць числове (00-12)
  • %p-до ранку або ввечері
  • %r-час у 12-годинному форматі (гг:хх: сс, після чого доповнено або після полудня)
  • %S секунд (00-59)
  • %s секунд (00-59)
  • %T-час 24 години (гг:хх:сс)
  • %U-тиждень (00-53), де неділя є першим днем ​​тижня
  • %u-тиждень (00-53), де понеділок – перший день тижня
  • %V-тиждень (01-53), де неділя є першим днем ​​тижня, що використовується з %X
  • %v-тиждень (01-53), де понеділок є першим днем ​​тижня, що використовується з %x
  • %W-назва дня тижня (неділя-субота)
  • %w-день тижня (0=неділя 6=субота)
  • %X-Рік для тижня, де неділя є першим днем ​​тижня, чотири цифри використовуються з %V
  • %x-рік для тижня, де понеділок є першим днем ​​тижня, чотири цифри використовуються з %v
  • %Y-Чотири цифри року
  • %y-Дві цифри року

Запит для форматування дати

SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;

Вихід:

Відформатована_дата
Четвер, 10 квітня 2025 р

Найкращі методи роботи з датою та часом у MySQL

1. Завжди використовуйте правильні формати дати

Вставляючи або оновлюючи дати, переконайтеся, що ви дотримуєтеся очікуваних форматів MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Це гарантує, що ваші запити повертатимуть очікувані результати без помилок.

2. Розгляд часових поясів із TIMESTAMP

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

3. Обробка діапазонів дат у запитах

Для фільтрації даних на основі діапазонів дат (наприклад, отримання всіх записів за певний місяць або рік) переконайтеся, що ви використовуєте належне порівняння дат уWHEREпункт. приклад:

SELECT * FROM orders  
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';

4. Зауваження продуктивності

Працюючи з функціями дати й часу, особливо у великих наборах даних, пам’ятайте про вплив на продуктивність. Уникайте використання таких функцій, якNOW()абоCURDATE()вWHEREоскільки вони можуть уповільнити запити під час роботи з великими таблицями.

Висновок

Функції дати та часу MySQL є основними інструментами для поводження і маніпулювання тимчасові дані у ваших базах даних. Шляхом оволодіння функціями, якNOW() CURDATE() DATE_ADD() DATEDIFF()іDATE_FORMAT()з якими можна легко працювати розрахунки на основі часу порівняння і форматів . Ключ до ефективного використання цих функцій полягає в розумінні їхнього синтаксису, коли і як їх використовувати, а також їхнього впливу на продуктивність у великих наборах даних. З цими знаннями ви зможете створювати більш ефективні точні та масштабовані запити для всіх ваших потреб, пов’язаних із датою та часом у MySQL.

Створіть вікторину