Member 10696161 Ответов: 1

Как sumarize корректно датавремя (разность между параметром и использоваться следующие переменные) - в MySQL


Я использую в mysql. Я создал таблицу "Sikcness" и добавил одну запись:

+--------+---------+---------+-------------+--------+----------+
| Id_SICK|ID_WORKER| BEGIN_DATE          | END_DATE            |
+--------+---------+---------+----------+------------+---------+
| 1      |   1     |2019-03-18 07:00:00  |2019-03-20 15:00:00  |  
+--------+---------+--------+------------+----------+----------+  


Затем я хотел бы суммировать во времени (разница во времени между столбцом End_date и столбцом begin_date) с помощью команды:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Sickness.END_DATE) - TIME_TO_SEC(Sickness.BEGIN_DATE))) AS 'SICKNESS TIME' FROM Sickness WHERE ID_WORKER = 1


Но у меня есть только этот результат (который неверен):

SICKNESS TIME
08:00:00


Эта команда должна считать его так:

+---------+-------------+--------+----------+
| BEGIN_DATE          | END_DATE            |
+---------+----------+------------+---------+
|2019-03-18 07:00:00  |2019-03-18 15:00:00  |  
+--------+------------+----------+----------+  
|2019-03-19 07:00:00  |2019-03-19 15:00:00  |  
+--------+------------+----------+----------+  
|2019-03-20 07:00:00  |2019-03-20 15:00:00  |  
+--------+------------+----------+----------+ 


Тогда это было бы правильно:
SICKNESS TIME
24:00:00


Какой тип запроса mysql я должен написать? Есть идеи? Приветствует.

Что я уже пробовал:

Я пробовал только с этой командой ниже:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Sickness.END_DATE) - TIME_TO_SEC(Sickness.BEGIN_DATE))) AS 'SICKNESS TIME' FROM Sickness WHERE ID_WORKER = 1


И это не сработало. :(

Mohibur Rashid

Сделайте это наоборот, запустите sum на diff, а затем преобразуйте обратно в день и час

1 Ответов

Рейтинг:
0

Richard MacCutchan

Глядя на документацию, можно сказать, что TIME_TO_SEC функция вычисляет только количество секунд в значении времени, а не дату. Вам также нужно будет добавить некоторый код для расчета количества дней. Взгляните на это Функция MySQL DATEDIFF() [^Обратите внимание, что в приведенном выше случае он рассчитал бы результат как 2 дня, поэтому вам нужно соответствующим образом скорректировать свой ответ.