Ex.
| ID | LOGS |
| 1 | 8:00:00 | --this is time in,
| 1 | 12:00:00| --this is time out,
| 2 | 20:00:00| -- time in,
| 2 | 8:00:00 | -- time out,
Мне нужно решить часы между временем и временем. Время и тайм-аут находятся в 1 колонке. Я новичок в MySQL и хочу практиковать это.
Учитывая то, что я знаю до сих пор... (это близко, но учитывая некоторые недостающие компоненты, это технически неразрешимо)
Я не думаю, что это "правильный" ответ, поскольку я не уверен в типе данных журналов и если он содержит поле даты или просто время. если только раз я не уверен, как учитывать количество дней, которые могут быть разными; ни как обрабатывать заказы записей, так как заказ не гарантируется.
Я также не уверен, что у ваших данных отсутствуют пары и как мы справимся с этим. Скажите, что кто-то не входил, а вводил ключ или наоборот. Как мы справляемся с такими ситуациями?
То, что показано ниже, имитирует функциональность row_number с использованием пользовательских переменных (@RN, @RN2) и присваивает каждой записи записи 1,2,3,4.. и т.д. RN. С этим номером строки генерируются два идентичных набора данных. Затем я присоединяюсь к этим наборам данных вместе на DS1.rownumber + 1 = DS2.rownumber и наборе данных. 1 номер строки ограничен только нечетными строками с использованием функции мод. Это означает, что теперь мы можем вычесть дату2 с даты1 и получить разницу.
SELECT ID, Col2DT, Col1DT, timestampDiff(Minute, COl2DT, Col1DT) as MinDiff
FROM (SELECT ID, Logs col1DT , @RN:=@RN+1 RN
FROM TableName
CROSS JOIN (SELECT @RN:=0)
ORDER BY ID, Logs Asc) Der_Tab1
INNER JOIN (SELECT ID, LogsCol2DT, @RN2:=@RN2+1 RN
FROM TableName
CROSS JOIN (SELECT @RN2:=0)
ORDER BY ID, Logs Asc) Der_Tab2
on Der_tab1.ID = Der_tab2.ID
and der_tab2.RN+1 = DerTab2.RN
WHERE mod(Der_tab1.RN,2)=1
Datediff
дает вам функцию для вычитания двух дат. То, что вы не определили, так это то, как вы знаете, какие две даты связаны Если мы предположим, что возрастающая дата в порядке обозначает дату в / из, вы можете смоделировать номер строки с помощью пользовательских переменных и разбить столбец даты на два столбца, а затем использовать разность дат. но до тех пор, пока мы не узнаем, как вы знаете, с какими датами соединяться Я не уверен, как поступить.