2013-11-18 2 views
1

У меня есть имя столбца как Time-diff. эта разница столбцов на две даты.Как суммировать столбец даты (hh: mm: ss)

Мне нужно суммировать все столбцы Time-diff, такие как Total потраченные часы.

Это было бы похоже,

Time-diff 
00:30:00 
00.10:00 
01.00.00 

i get like this: 

CONVERT(CHAR(8), CAST(CONVERT(varchar(23),DateOut,121) AS DATETIME)- 
CAST(CONVERT(varchar(23),DateIn,121)AS DATETIME),8) Time-diff 

мне нужно суммировать столбец времени различий, как, как показано ниже:

the output should be:01:40:00 

Заранее спасибо ..

+2

Какая СУБД вы используете? Postgres? Каким типом данных является этот столбец? Интервал или время? –

+0

Тип данных столбца DATETIME –

+0

И какие СУБД вы используете? –

ответ

1

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

SELECT CONVERT(CHAR(8), DateOut - DateIn, 8) [Time-diff] 

и вы можете получить вывод, который вы ищете, используя другой запрос суммировать и затем бросьте этот вывод.

select CONVERT(CHAR(8), 
dateadd(s, sum(datediff(s, DateIn, DateOut)), getdate()) - getDate(),8) 
from yourTable 

Это только разность дат в секундах каждой строки и суммирует ее. Затем используется тот же метод, который вы использовали ранее, но на этот раз использует разницу во времени, рассчитанную на сумму каждой строки

+0

Вы дважды вызываете getdate(). Вы беспокоитесь о том, чтобы ввести ошибку? –

+0

@brad, действительная точка, но вряд ли. Мы могли бы, конечно, CONVERT (date, GETDATE()) каждый из этих getDate(), но чтобы этот пример был более простым и понятным, я оставлю это опущенным. – Jas

+0

Я думаю, что вы правы, что вряд ли представит ошибку. Если бы была введена ошибка, она была бы небольшой. Однако, если ошибка была введена с использованием convert (date, getdate()) около полуночи, она может быть довольно большой. –

0

Кража непосредственно у Jas с небольшой настройкой;

select CONVERT(CHAR(8), 
     dateadd(s, sum(datediff(s, DateIn, DateOut)), '1/1/1900') 
     ,8) 
    from yourTable 
Смежные вопросы