Как я могу получить сумму нескольких значений даты и времени? - PullRequest
8 голосов
/ 17 октября 2011

У меня запрос такой, что результат запроса:

SELECT CONVERT(VARCHAR(8),(MAX(END_TIME)-MIN(START_TIME)),108) as DURATION WHERE ... GROUP BY TITLE

Для каждого заголовка DURATION отличается. Запрос возвращает:

DURATION
00:16:14
00:00:00
00:01:30
00:16:25
00:09:34
00:00:01
01:04:04
00:00:28
00:00:12
00:06:11
00:26:38
00:31:44
00:02:16
00:03:22
00:09:39
00:03:20
00:03:43
00:09:33
00:08:05
00:06:58
00:25:29
01:55:30
00:03:02
00:00:18
00:06:09
00:07:26
00:25:43
00:00:16
00:26:58
02:09:38
00:57:56
00:00:45
00:00:00
00:07:24
00:00:54
00:00:27
00:01:28
00:07:14
00:00:19
01:43:25
00:58:23
00:02:29
02:19:48
00:09:06
05:12:15
02:27:15
00:56:47
00:02:24

Мне нужна сумма этих значений; как я могу получить это?

Ответы [ 2 ]

15 голосов
/ 17 октября 2011

Конвертировать минуты в секунды

SUM() секунды

Конвертировать в минуты


Следующее даст вам СУММУ секунд:

SET @Seconds = SELECT SUM(DATEDIFF(SECOND, [START_TIME], [END_TIME]))

Затем следующее превращает это в datetime объект:

select convert(varchar(8), dateadd(second, @Seconds, 0),  108)

Или как 1 запрос:

SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, [START_TIME], [END_TIME])), 0),  108)
1 голос
/ 17 октября 2011

Вы не можете суммировать раз.Вместо этого вам следует использовать функцию DateDiff с начальным и конечным временем, используя параметр seconds.Это вернет целочисленный тип данных, который вы можете суммироватьКогда вы закончите, преобразуйте его в DateTime, чтобы отформатировать его как часы: минуты: секунды.

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