Поиск по сайту:
Нет ничего страшнее деятельного невежества (И. Гете).

Интервал в MySQL

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
20.02.2020
Как скопировать базу данных MySQL

Описание : в этой статье вы узнаете, как использовать значения интервала MySQL для выполнения арифметики даты и времени.

 

Введение в интервальные значения MySQL

Значения интервала MySQL используются в основном для расчета даты и времени. Чтобы создать значение интервала, вы используете следующее выражение:

INTERVAL expr unit

 

За ним следует ключевое слово INTERVAL expr, определяющее значение интервала и unitуказывающее единицу измерения интервала. Например, чтобы создать 1-дневный интервал, вы используете следующее выражение:

INTERVAL 1 DAY

 

Обратите внимание, что INTERVAL и UNIT без учета регистра, поэтому следующее выражение эквивалентно приведенному выше:

interval 1 day

 

В основном мы используем интервальные значения для арифметики даты и времени, как показано ниже:

date + INTERVAL expr unit
date - INTERVAL expr unit

 

Значения интервалов также используются в различных временных функциях, таких как DATE_ADD, DATE_SUB, TIMESTAMPADD и TIMESTAMPDIFF

MySQL определяет стандартные форматы expr и unit как показано в следующей таблице:

unitexpr
DAYДни
DAY_HOURДни: Часы
DAY_MICROSECONDДни: Микросекунды
DAY_MINUTEДни: Минуты
DAY_SECONDДни: Секунды
HOURЧасы
HOUR_MICROSECONDЧасы: Микросекунды
HOUR_MINUTEЧасы: Минуты
HOUR_SECONDЧасы: Секунды
MICROSECONDМикросекунд
MINUTEМинуты
MINUTE_MICROSECONDМинуты: Микросекунды
MINUTE_SECONDМинуты: Секунды
MONTHМесяц
QUARTERДекада
SECONDСекунды
SECOND_MICROSECONDСекунды: Микросекунды
WEEKНеделя
YEARГод
YEAR_MONTHГод: Месяц

Примеры интервалов в MySQL

Следующее утверждение добавляет 1 день к January 1st 2020:

SELECT '2020-01-01' + INTERVAL 1 DAY;
+-------------------------------+
| '2020-01-01' + INTERVAL 1 DAY |
+-------------------------------+
| 2020-01-02                    |
+-------------------------------+
1 row in set (0.01 sec)

 

Читать  Распределенная блокировка Redis

Если значение интервала используется в выражении, которое включает значение DATE или значение интервала DATETIME находится справа от выражения, вы можете использовать отрицательное значение expr, как показано в следующем примере:

SELECT '2020-01-01' + INTERVAL -1 DAY;
+--------------------------------+
| '2020-01-01' + INTERVAL -1 DAY |
+--------------------------------+
| 2019-12-31                     |
+--------------------------------+
1 row in set(0.00sec)

 

Следующий оператор показывает, как использовать DATE_ADD и DATE_SUB, чтобы добавлять/вычитать 1 месяц из значения даты:

SELECT DATE_ADD('2020-01-01', INTERVAL 1 MONTH)1_MONTH_LATER,
DATE_SUB('2020-01-01',INTERVAL 1 MONTH) 1_MONTH_BEFORE;
+---------------+----------------+
| 1_MONTH_LATER | 1_MONTH_BEFORE |
+---------------+----------------+
| 2020-02-01    | 2019-12-01     |
+---------------+----------------+
1 row in set (0.00 sec)

 

Следующий запрос использует функцию TIMESTAMPADD(unit, interval, expression) для добавления 30 минут к значению временной метки:

SELECT TIMESTAMPADD(MINUTE,30,'2020-01-01') 30_MINUTES_LATER;
+---------------------+
| 30_MINUTES_LATER    |
+---------------------+
| 2020-01-01 00:30:00 |
+---------------------+
1 row in set (0.00 sec)

 

Практический пример интервала в MySQL

Давайте создать новую таблицу с именем memberships для демонстрации:

CREATE TABLE memberships (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(355) NOT NULL,
plan VARCHAR(255) NOT NULL,
expired_date DATE NOT NULL
);

 

В таблице memberships в столбце expired_date хранится дата окончания членства каждого участника.

Следующий оператор вставляет несколько строк в таблицу memberships.

INSERT INTO memberships(email, plan, expired_date)
VALUES('andreyex@example.ru','Gold','2020-02-13'),
('alex@example.ru','Platinum','2020-02-10'),
('max@example.ru','Silver','2020-02-08');

 

Предположим, сегодня 2020-02-06 вы можете найти участников, срок действия которых истек в течение 7 дней, с помощью следующего запроса:

SELECT
email,
plan,
expired_date,
DATEDIFF(expired_date, '2020-02-06') remaining_days
FROM
memberships
WHERE
'2020-02-06' BETWEEN DATE_SUB(expired_date, INTERVAL 7 DAY) AND expired_date;

 

В этом запросе мы использовали функцию DATE_SUB для вычитания истекшей даты на 7 дней, указанных значением интервала (INTERVAL 7 DAY).

Читать  Оператор EXPLAIN в MySQL

В этой статье вы узнали, как использовать значение интервала MySQL для арифметики даты и времени.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Рекомендуемое
Команда export в Linux используется для создания переменных среды. Вы можете…

Спасибо!

Теперь редакторы в курсе.