#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’, и он будет качаться.