Робота з датою та часом у MySQL, MySQL, Бази даних, статті на
У цій статті ми розглянемо основи роботи з датою та часом у MySQL.
Формат дати та часу
MySQL date format підтримує кілька форматів дати та часу. Їх можна визначити так:
DATE – зберігає значення дати у вигляді РРРР-ММ-ДД. Наприклад, 2008-10-23. DATETIME - зберігає значення дати та часу у вигляді РРРР-MM-ДД ЧЧ:ММ:СС. Наприклад, 2008-10-23 10:37:22. Діапазон дат і часу, що підтримується: 1000-01-01 00:00:00 до 9999-12-31 23:59:59 TIMESTAMP - схожий на DATETIME з деякими відмінностями в залежності від версії MySQL і режиму, в якому працює сервер .
Створення полів дати та часу
Таблиця, що містить типи даних DATE і DATETIME створюється так само, як і інші стовпці. Наприклад, ми можемо створити нову таблицю під назвою orders, яка містить стовпці номера замовлення, замовленого товару, дати замовлення та дати доставки замовлення:
Стовпець ORDER_DATE - це поле типу MySQL DATE TIME, в яке ми записуємо дату та час, коли було зроблено замовлення. Для дати доставки неможливо передбачити точний час, тому записуємо тільки дату.
Формати дати та часу
Найчастіше використовуваним роздільником для дат є тире (-), а часу - двокрапка (:). Але ми можемо використовувати будь-який символ або взагалі не додавати жодного символу.
Наприклад, всі наступні формати є правильними:
Функції дати та часу
MySQL містить безліч функцій, які використовуються для обробки дати та часу. У наведеній нижче таблиці представлений список функцій, що найчастіше використовуються:
| Функція | Опис |
| ADDDATE() | Додає дату. |
| ADDTIME() | Додає час. |
| CONVERT_TZ() | Конвертує з одного часового поясу в інший. |
| CURDATE() | Повертає поточну дату. |
| CURTIME() | Повертає поточний час. |
| DATE_ADD() | Додає одну дату до іншої. |
| MySQL DATE_FORMAT () | Вказує вказаний формат дати. |
| DATE() | Витягує частину дати з дати або виразу дата-час. |
| DATEDIFF() | Віднімає одну дату з іншої. |
| DAYNAME() | Повертає день тижня. |
| DAYOFMONTH() | Повертає день місяця (1-31). |
| DAYOFWEEK() | Повертає індекс дня тижня із аргументу. |
| DAYOFYEAR() | Повертає день року (1–366). |
| EXTRACT | Витягує частину дати. |
| FROM_DAYS() | Перетворює номер дня на дату. |
| FROM_UNIXTIME() | Вказує формат дати у форматі UNIX. |
| MySQL DATE_SUB () | Віднімає одну дату з іншої. |
| HOUR() | Витягує годину. |
| LAST_DAY | Повертає останній день місяця для аргументу. |
| MAKEDATE() | Створює дату з року та дня року. |
| MAKETIME () | Повертає значення часу. |
| MICROSECOND() | Повертає мілісекунди із аргументу. |
| MINUTE() | Повертає хвилини із аргументу. |
| MONTH() | Повертає місяць із переданої дати. |
| MONTHNAME() | Повертає назву місяця. |
| NOW() | Повертає поточну дату та час. |
| PERIOD_ADD() | Додає інтервал до місяця-року. |
| PERIOD_DIFF() | Повертає кількість місяців між двома періодами. |
| QUARTER() | Повертає чверть години з переданої дати як аргумент. |
| SEC_TO_TIME() | Конвертує секунди у формат "ЧЧ:MM:СС". |
| SECOND() | Повертає секунду (0-59). |
| MySQL STR_TO_DATE () | Перетворює рядок на дату. |
| SUBTIME() | Віднімає час. |
| SYSDATE() | Повертає час, коли було виконано функція. |
| TIME_FORMAT() | Визначає формат часу. |
| TIME_TO_SEC() | Повертає аргумент, перетворений на секунди. |
| TIME() | Вибирає частину часу з виразу, що передається як аргумент. |
| TIMEDIFF() | Віднімає час. |
| TIMESTAMP() | З одним аргументом ця функція повертає дату чи вираз дата-час. Із двома аргументами повертається сума аргументів. |
| TIMESTAMPADD() | Додає інтервал до дати-часу. |
| TIMESTAMPDIFF() | Віднімає інтервал з дати - часу. |
| TO_DAYS() | Повертає аргумент дати, перетворений на дні. |
| UNIX_TIMESTAMP() | Витягує дату-час у форматі UNIX у формат, який приймає MySQL. |
| UTC_DATE() | Повертає поточну дату за універсальним часом (UTC). |
| UTC_TIME() | Повертає поточний час за універсальним часом (UTC). |
| UTC_TIMESTAMP() | Повертає поточну дату-час за універсальним часом (UTC). |
| WEEK() | Повертає номер тижня. |
| WEEKDAY() | Повертає індекс дня тижня. |
| WEEKOFYEAR() | Повертає календарний тиждень дати (1-53). |
| YEAR() | Повертає рік. |
| YEARWEEK() | Повертає рік та тиждень. |
Ви можете поекспериментувати з цими функціями MySQL date format, навіть не заносячи жодних даних до таблиці. Наприклад:
Ви можете спробувати поєднання кількох функцій в одному запиті (наприклад, щоб знайти день тижня): mysql> SELECT MONTHNAME(NOW());
Внесення значень дати та часу в стовпці таблиці
Розглянемо, як вносяться значення date MySQL до таблиці. Щоб продемонструвати це, ми продовжимо використовувати таблицю orders, яку створили на початку статті.
Ми почнемо з додавання нового рядка замовлення. Значення поля order_no автоматично збільшуватиметься на 1, так що нам залишається вставити значення order_item , дату створення замовлення та дату доставки. Дата замовлення - це час, коли вставляється замовлення, тому ми можемо використовувати функцію NOW() , щоб внести в рядок поточну дату та час.
Дата доставки - це період часу після дати замовлення, яку ми можемо повернути, використовуючи функцію MySQL DATE_ADD() , яка приймає як аргументи дату початку (в нашому випадку NOW()) та INTERVAL (в нашому випадку 14 днів. Наприклад:
Даний запит створює замовлення для зазначеного елемента з датою, часом виконання замовлення, та інтервалом через два тижні після цього як дата доставки:
Так само можна замовити товар з датою доставки через два місяці:
Вилученняданих за датою та часом
Так само ми можемо використовувати BETWEEN , щоб вибрати товари, доставка яких відбудеться між двома вказаними датами. Наприклад:
Висновок
У цій статті ми розглянули формати, що використовуються для визначення дати і часу, і перерахували функції, що використовуються для операцій в MySQL з тип DATE . А також кілька прикладів внесення та вилучення даних.
Переклад статті "Working with Dates and Times in MySQL" був підготовлений дружньою командою проекту Сайтобудування від А до Я.