Расчёт разницы в минутах между двумя датами в MySQL

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для определения интервала в минутах между двумя моментами времени в SQL Server, примените функцию DATEDIFF:

SQL
Скопировать код
SELECT DATEDIFF(minute, '2023-01-01 08:00', '2023-01-01 09:30') AS Minutes;

Для MySQL подходит функция TIMESTAMPDIFF:

SQL
Скопировать код
SELECT TIMESTAMPDIFF(MINUTE, '2023-01-01 08:00', '2023-01-01 09:30') AS Minutes;

Оба запроса возвращают значение 90 минут, что соответствует прошедшему времени между указанными промежутками.

Кинга Идем в IT: пошаговый план для смены профессии

Выделение записей, основываясь на временной разнице

SQL
Скопировать код
SELECT *
FROM your_table
WHERE TIMESTAMPDIFF(MINUTE, your_start_time_column, your_end_time_column) > 20;

Допустим, вам требуется отобрать события, продолжительность которых превысила 20 минут. Этот SQL-запрос позволит выполнить такую задачу. Учтите, что для корректной работы функции TIMESTAMPDIFF требуется версия MySQL 5.6 или новее.

Точный расчет времени, с учетом временной зоны

SQL
Скопировать код
SELECT ROUND(TIME_TO_SEC(TIMEDIFF(your_end_time_column, your_start_time_column))/60) AS Minutes
FROM your_table;

Данный запрос вернет вам разницу во времени между двумя моментами, учитывающую секунды, и округлит результат до ближайшей минуты. Реализация производится с помощью MySQL.

Что касается учета временных зон:

SQL
Скопировать код
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 учет временной зоны при определении временной разницы.

Сопоставление временных интервалов с текущим временем

SQL
Скопировать код
SELECT *
FROM your_table
WHERE TIMESTAMPDIFF(MINUTE, your_timestamp_column, CURRENT_TIMESTAMP()) > 20;

Данный запрос находит все записи, для которых с момента создания прошло более 20 минут, используя функцию CURRENT_TIMESTAMP() для определения текущего времени.

Умение умело манипулировать датами

MySQL облегчает добавление минут к определенному времени:

SQL
Скопировать код
SELECT DATE_ADD('2023-01-01 08:00', INTERVAL 20 MINUTE);

Результатом будет '2023-01-01 08:20', то есть плюс ровно 20 минут.

Визуализация

Даты можно представить как точки на временной линии:

ХронолинияВременной отпечаток
Начальная точка 🚉Дата и время
Конечная точка 🏁Дата и время

Временная разница – это расстояние между этими двумя точками:

🚉--------------------T(🕒)--------------------- 🏁

Где T(🕒) символизирует путешествие времени от начальной до конечной точки.

Работа с Unix-временными отметками

Чтобы преобразовать Unix-временные отметки для сопоставления с текущим временем, используйте UNIX_TIMESTAMP():

SQL
Скопировать код
SELECT TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME(your_unix_timestamp_column), NOW())
FROM your_table;

Эта функция позволяет преобразовать Unix-временные отметки в формат, подходящий для сравнения.

Динамические отличия во времени

Чтобы обнаружить записи, где разница более 20 минут, воспользуйтесь следующим запросом:

SQL
Скопировать код
SELECT *, TIMESTAMPDIFF(MINUTE, start_column, end_column) AS diff_minutes
FROM your_table
HAVING diff_minutes > 20;

Используйте HAVING для фильтрации результатов на основе значений, вычисленных в запросе SELECT.

Полезные материалы

  1. Справочник по MySQL 8.0 :: 11.2. Типы данных даты и времениофициальный справочник MySQL, где содержится вся необходимая информация.
  2. DATEDIFF (Transact-SQL) – SQL Serverинструкция Microsoft по использованию функции DATEDIFF.
  3. Документация PostgreSQL: 9.9. Функции и операторы даты/времениобширная документация Postgres, которая поможет с работой с датами и временем.
  4. Функции даты и времени SQLite — руководство SQLite по работе с датой и временем.
  5. Спецификация расширенного формата даты и времени (EDTF) (Библиотека Конгресса США) — нормы и правила для представления дат и времени по стандарту EDTF.
  6. Функция DATEADD() в SQL Server — руководство по использованию функции DATEADD с практическими примерами.
  7. TIMESTAMPDIFF – База знаний MariaDB — статья для тщательного изучения TIMESTAMPDIFF.