Welcome to php club

PHP FAQ from PHPclub.ru: MySQLTimesum ...

Начало | Каталог | Изменения | НовыеКомментарии | Вам запрещён доступПользователи | Вам запрещён доступРегистрация | Вход:  Пароль:  

TIMESUM – суммируем время в My SQL.
Иногда бывает нужно суммировать время, в результате группировки или еще чего-либо.
Т.к. стандартная функция SUM не умеет считать время (время в формате HH:MM:SS), нужно просто конвертировать время в секунды, сложить получившиеся секунды и результат переконвертировать в фомат времени!
Например, есть таблица report:

CREATE TABLE `report` (
  `Id` int(11NOT NULL auto_increment,
  `Start` timestamp NOT NULL default '0000-00-00 00:00:00',
  `End` timestamp NOT NULL default '0000-00-00 00:00:00',
  `Report_Date` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`Id`),
) ENGINE=MyISAM;

Необходимо посчитать сумму разниц между Start и End и сгруппировать результат по дате. Для этого выполним запрос:
SELECT Report_Date, SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(End,Start)))) AS Result_Time
FROM `report`
GROUP BY Report_Date

Что же делает этот запрос?
TIMEDIFF – вычисляет разницу между End и Start
TIME_TO_SEC – конвертирует результат работы TIMEDIFF в секунды
SUM – суммирует колличество секунд
SEC_TO_TIME – конвертирует секунды во время (формат HH:MM:SS)
Более подробно – в мануале (http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html)


ЗЫ: тип полей Start,End – timestamp


 
Один комментарий. [Показать комментарии/форму]