Подсчет времени различий в зависимости от статуса - PullRequest
1 голос
/ 15 марта 2012

у меня есть стол

ID    | Date     | Time     | Status  
73937 | 3/1/2012 | 17:25:00 | Pending        |     
73938 | 3/1/2012 | 17:27:00 | Pending        | time diff 2 min  
73948 | 3/1/2012 | 17:29:00 | Pending        | time diff 2 min  
73952 | 3/1/2012 | 17:45:00 | Stop Clock     | time diff 16 min   
74967 | 3/1/2012 | 19:15:00 | Stop Clock     | time diff 0 min  
74970 | 3/1/2012 | 20:15:00 | Pending Active | time diff 60 min  
74972 | 3/1/2012 | 20:21:00 | Active         | time diff 6 min

Как я могу рассчитать разницу во времени, когда статус не Stop Clock и суммировать разницу во времени в MySql?
Вы можете увидеть, если статус Stop Clock остановит счет (0 мин).

1 Ответ

1 голос
/ 15 марта 2012

Этот запрос:

select id, date, time, status, hour(diff) * 60 + minute(diff) Diff from (
  select id, date,
    if(@active or status != 'StopClock',
       timediff(addtime(date, time), @prevTime), 0) Diff,
    time(@prevTime := addtime(date, time)) time,
    @active := status != 'StopClock',
    status
  from t, (select @prevTime := 0, @active := false) init
  order by id
) final

приведет к:

+-------+------------+----------+---------------+------+
|  ID   |    DATE    |   TIME   |    STATUS     | DIFF |
+-------+------------+----------+---------------+------+
| 73937 | 2012-03-01 | 17:25:00 | Pending       |      |
| 73938 | 2012-03-01 | 17:27:00 | Pending       |    2 |
| 73948 | 2012-03-01 | 17:29:00 | Pending       |    2 |
| 73952 | 2012-03-01 | 17:45:00 | StopClock     |   16 |
| 74967 | 2012-03-01 | 19:15:00 | StopClock     |    0 |
| 74970 | 2012-03-01 | 20:15:00 | PendingActive |   60 |
| 74972 | 2012-03-01 | 20:21:00 | Active        |    6 |
+-------+------------+----------+---------------+------+

Обратите внимание, что по какой-то причине вы не учитываете секунды.Дайте мне знать, если у вас есть какие-либо проблемы с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...