Я пытаюсь суммировать все значения timedifference и показывать в формате HH: mm: ss, но результат меньше, чем должен быть.Сумма всех значений timediff показывает неправильное значение
Вот мое DDLS и моя попытка до сих пор:
CREATE TABLE tblproduction
(
OperaterID int,
OperationID varchar(20),
StartDateTime datetime,
EndDateTime datetime
);
INSERT INTO `tblproduction` VALUES
(227, 'OPEE21', '2014-12-01 05:51:34', '2014-12-01 06:48:30'),
(227, 'OPEE21', '2014-12-01 06:54:37', '2014-12-01 10:14:30'),
(227, 'OPEE21', '2014-12-01 10:23:03', '2014-12-01 13:41:31'),
(227, 'OPEE21', '2014-12-02 05:54:09', '2014-12-02 07:50:53'),
(227, 'OPEE21', '2014-12-02 07:55:03', '2014-12-02 13:37:56'),
(227, 'OPEE21', '2014-12-09 14:06:57', '2014-12-09 17:20:09'),
(227, 'OPEE21', '2014-12-09 17:22:07', '2014-12-09 21:51:24'),
(227, 'OPEE21', '2014-12-11 14:06:12', '2014-12-11 18:36:47'),
(227, 'OPEE21', '2014-12-12 14:07:09', '2014-12-12 14:58:42'),
(227, 'OPEE21', '2014-12-12 15:05:23', '2014-12-12 15:49:37'),
(227, 'OPEE21', '2014-12-12 15:55:12', '2014-12-12 21:55:24'),
(227, 'OPEE21', '2014-12-15 05:54:42', '2014-12-15 12:32:58'),
(227, 'OPEE21', '2014-12-15 12:38:48', '2014-12-15 13:40:08'),
(227, 'OPEE21', '2014-12-18 10:47:07', '2014-12-18 13:36:55'),
(227, 'OPEE21', '2014-12-19 06:16:58', '2014-12-19 13:37:29'),
(227, 'OPEE21', '2014-12-22 14:09:29', '2014-12-22 21:53:45'),
(227, 'OPEE21', '2014-12-23 14:26:54', '2014-12-23 17:12:13'),
(227, 'OPEE21', '2014-12-23 17:14:11', '2014-12-23 18:00:40'),
(227, 'OPEE21', '2014-12-23 18:03:51', '2014-12-23 21:07:57'),
(227, 'OPEE21', '2014-12-23 21:08:56', '2014-12-23 21:46:58');
SELECT p.OperaterID
, p.OperationID
, p.StartDateTime
, p.EndDateTime
, TIME_FORMAT(SUM(TIMEDIFF(p.EndDateTime, p.StartDateTime)), '%H:%i:%s') TotalTime
FROM tblproduction p
WHERE p.StartDateTime >= '2014-12-01 00:00:00'
AND p.StartDateTime <= '2014-12-31 23:59:59'
AND p.OperaterID = 227
AND p.OperationID = 'OPEE21'
GROUP
BY p.OperationID;
+------------+-------------+---------------------+---------------------+-----------+
| OperaterID | OperationID | StartDateTime | EndDateTime | TotalTime |
+------------+-------------+---------------------+---------------------+-----------+
| 227 | OPEE21 | 2014-12-01 05:51:34 | 2014-12-01 06:48:30 | 63:48:44 |
+------------+-------------+---------------------+---------------------+-----------+
... и скрипка того же SQL Fiddle
Результат должен быть 67:52:04, но запрос возвращает 63:48 : 44. Я не сейчас, где я потерял 4 часа.
Вы выбираете 'p.OperaterID' [так в оригинале],' p.OperationID', 'p.StartDateTime' и' p.EndDateTime', но только GROUP BY 'OperationID'. Это не сработает. MySQL прощает упущение. Другие РСУБД будут выходить из строя. – Strawberry