Робота з датою та часом у 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" був підготовлений дружньою командою проекту Сайтобудування від А до Я.