Общее время, затраченное Mysql на две даты

#mysql

#mysql

Вопрос:

Если у меня есть две строки

 id created          start            stop
1  28-01-2011 23:00 28-01-2011 23:00 28-01-2011 23:01  
2  28-01-2011 23:10 28-01-2011 23:10 28-01-2011 23:11
  

Какой запрос я могу выполнить, чтобы получить общее затраченное время для одной даты, поэтому для 28-01-2011 общее время составило 2 минуты.

Возможно ли это?

Комментарии:

1. Имеют ли эти столбцы тип datetime или это строки в таком формате: ‘дд-мм-гггг чч: мм’?

2. тип столбца: временная метка. @MarkByers

Ответ №1:

ну, один из вариантов прост:

 select sum(unix_timestamp(stop) - 
    unix_timestamp(start))/60 from table
    where date(created) = '28-01-2011';

mysql> select now(), date_add(now(), interval 10 minute);
 --------------------- ------------------------------------- 
| now()               | date_add(now(), interval 10 minute) |
 --------------------- ------------------------------------- 
| 2011-10-04 13:29:56 | 2011-10-04 13:39:56                 |
 --------------------- ------------------------------------- 
1 row in set (0.01 sec)

mysql> select sum(unix_timestamp(now()) -
          unix_timestamp(date_add(now(), interval 10 minute)));
 ---------------------------------------------------------------------------------- 
| sum(unix_timestamp(now()) - unix_timestamp(date_add(now(), interval 10 minute))) |
 ---------------------------------------------------------------------------------- 
|                                                                             -600 |
 ---------------------------------------------------------------------------------- 
1 row in set (0.00 sec)


mysql> select sum(unix_timestamp(now()) - 
          unix_timestamp(date_add(now(), interval 10 minute))) / 60 ;
 --------------------------------------------------------------------------------------- 
| sum(unix_timestamp(now()) - unix_timestamp(date_add(now(), interval 10 minute))) / 60 |
 --------------------------------------------------------------------------------------- 
|                                                                              -10.0000 |
 --------------------------------------------------------------------------------------- 
1 row in set (0.00 sec)
  

Комментарии:

1. У меня нет. Я добавил подсказку, которая поможет. Просто провел некоторое тестирование и см. Результаты выше.

2. Вы должны использовать date(created) = '2011-01-28' , а не '28-01-2011' .

3. Но рассмотрим «28-01-2011 23:00» — это необычный формат для начала. да, date (create) вообще не будет работать для этого формата.

4. Он сказал, что поле представляет собой временную метку, поэтому я предполагаю, что это только то, как данные форматируются для вывода.

5. да, если это так, то просто date(created) = ‘2011-01-28’, и он будет качаться.