Рассчитать минуты между двумя или более отметками времени в SQL - PullRequest
0 голосов
/ 24 января 2020

Мой вопрос: есть ли способ вычислить разницу между двумя временными метками с помощью запроса SQL? У меня есть таблица базы данных (MySQL 5.6) с разными временными метками:

id  start_time          end_time            employee
1   2020-02-01 06:00:00 2020-02-01 13:00:00 Mark
2   2020-02-01 06:00:00 2020-02-01 12:30:00 David
3   2020-02-01 07:00:00 2020-02-01 14:00:00 Donald
4   2020-02-01 07:00:00 2020-02-01 13:00:00 Harry

Я хочу рассчитать разницу в минутах между каждой записью в таблице, то есть: разница записи с идентификатором 1 равна 13 : 00: 00 - 06:00:00 = 7 часов = 420 минут. Я хочу посчитать это для каждой записи в таблице и подвести итоги всех минут. Как я могу это сделать?

Я уже пробовал

SELECT TIMESTAMPDIFF(MINUTE, '2020-01-02 06:00:00', '2020-01-02 13:00:00'); 

но как использовать это со всеми записями без жесткого кодирования всех временных меток самостоятельно?

Могу ли я использовать что-то вроде

SELECT TIMESTAMPDIFF(MINUTE, 'start_time', 'end_time') AS totalMinutes ?

Большое спасибо заранее!

1 Ответ

2 голосов
/ 24 января 2020

Я ожидаю, что это будет делать то, что вы хотите:

select t.*,
       timestampdiff(minute, start_time, end_time) as minutes
from t;

Вы можете включить это в представление, если хотите, чтобы оно было легко доступно:

create v_t as
    select t.*,
           timestampdiff(minute, start_time, end_time) as minutes
    from t;

В более поздних версиях, Вы можете добавить вычисляемый столбец:

alter table t add minutes int generated always as
    (timestampdiff(minute, start_time, end_time));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...