Расчёт разницы в минутах между двумя датами в MySQL
Быстрый ответ
Для определения интервала в минутах между двумя моментами времени в SQL Server, примените функцию DATEDIFF:
SELECT DATEDIFF(minute, '2023-01-01 08:00', '2023-01-01 09:30') AS Minutes;
Для MySQL подходит функция TIMESTAMPDIFF:
SELECT TIMESTAMPDIFF(MINUTE, '2023-01-01 08:00', '2023-01-01 09:30') AS Minutes;
Оба запроса возвращают значение 90 минут, что соответствует прошедшему времени между указанными промежутками.
Выделение записей, основываясь на временной разнице
SELECT *
FROM your_table
WHERE TIMESTAMPDIFF(MINUTE, your_start_time_column, your_end_time_column) > 20;
Допустим, вам требуется отобрать события, продолжительность которых превысила 20 минут. Этот SQL-запрос позволит выполнить такую задачу. Учтите, что для корректной работы функции TIMESTAMPDIFF
требуется версия MySQL 5.6 или новее.
Точный расчет времени, с учетом временной зоны
SELECT ROUND(TIME_TO_SEC(TIMEDIFF(your_end_time_column, your_start_time_column))/60) AS Minutes
FROM your_table;
Данный запрос вернет вам разницу во времени между двумя моментами, учитывающую секунды, и округлит результат до ближайшей минуты. Реализация производится с помощью MySQL.
Что касается учета временных зон:
SELECT TIMESTAMPDIFF(
MINUTE,
CONVERT_TZ(your_start_time_column, '+00:00', your_timezone),
CONVERT_TZ(NOW(), '+00:00', your_timezone)
) AS TimeDifference
FROM your_table;
Этот запрос означает запросить у MySQL учет временной зоны при определении временной разницы.
Сопоставление временных интервалов с текущим временем
SELECT *
FROM your_table
WHERE TIMESTAMPDIFF(MINUTE, your_timestamp_column, CURRENT_TIMESTAMP()) > 20;
Данный запрос находит все записи, для которых с момента создания прошло более 20 минут, используя функцию CURRENT_TIMESTAMP()
для определения текущего времени.
Умение умело манипулировать датами
MySQL облегчает добавление минут к определенному времени:
SELECT DATE_ADD('2023-01-01 08:00', INTERVAL 20 MINUTE);
Результатом будет '2023-01-01 08:20', то есть плюс ровно 20 минут.
Визуализация
Даты можно представить как точки на временной линии:
Хронолиния | Временной отпечаток |
---|---|
Начальная точка 🚉 | Дата и время |
Конечная точка 🏁 | Дата и время |
Временная разница – это расстояние между этими двумя точками:
🚉--------------------T(🕒)--------------------- 🏁
Где T(🕒) символизирует путешествие времени от начальной до конечной точки.
Работа с Unix-временными отметками
Чтобы преобразовать Unix-временные отметки для сопоставления с текущим временем, используйте UNIX_TIMESTAMP()
:
SELECT TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME(your_unix_timestamp_column), NOW())
FROM your_table;
Эта функция позволяет преобразовать Unix-временные отметки в формат, подходящий для сравнения.
Динамические отличия во времени
Чтобы обнаружить записи, где разница более 20 минут, воспользуйтесь следующим запросом:
SELECT *, TIMESTAMPDIFF(MINUTE, start_column, end_column) AS diff_minutes
FROM your_table
HAVING diff_minutes > 20;
Используйте HAVING
для фильтрации результатов на основе значений, вычисленных в запросе SELECT
.
Полезные материалы
- Справочник по MySQL 8.0 :: 11.2. Типы данных даты и времени — официальный справочник MySQL, где содержится вся необходимая информация.
- DATEDIFF (Transact-SQL) – SQL Server — инструкция Microsoft по использованию функции
DATEDIFF
. - Документация PostgreSQL: 9.9. Функции и операторы даты/времени — обширная документация Postgres, которая поможет с работой с датами и временем.
- Функции даты и времени SQLite — руководство SQLite по работе с датой и временем.
- Спецификация расширенного формата даты и времени (EDTF) (Библиотека Конгресса США) — нормы и правила для представления дат и времени по стандарту EDTF.
- Функция DATEADD() в SQL Server — руководство по использованию функции
DATEADD
с практическими примерами. - TIMESTAMPDIFF – База знаний MariaDB — статья для тщательного изучения
TIMESTAMPDIFF
.