Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как получить разницу между двумя столбцами time после их суммирования?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 100
Добрый день, есть такие два столбца:

norm endOperation
NULL 00:50:00.0000000
02:11:00.0000000 01:20:00.0000000
00:46:00.0000000 00:50:00.0000000
00:36:00.0000000 00:50:00.0000000
00:46:00.0000000 00:50:00.0000000
01:41:00.0000000 01:20:00.0000000
NULL 00:20:00.0000000
NULL 00:20:00.0000000
NULL 00:50:00.0000000


Суммируем:

SELECT 
   CONVERT(TIME, DATEADD(s, SUM(( DATEPART(hh, norm) * 3600 ) + ( DATEPART(mi, norm) * 60 ) + DATEPART(ss, norm)), 0)) AS time1
   ,CONVERT(TIME, DATEADD(s, SUM(( DATEPART(hh, endOperation) * 3600 ) + ( DATEPART(mi, endOperation) * 60 ) + DATEPART(ss, endOperation)), 0)) AS time2


получаем строку:

time1 time2
06:00:00.0000000 07:30:00.0000000


Теперь нужно добавить третий столбец с разницей.
Не получается получить разницу из двух созданных time1 и time2. Ругается на то что не знает что это за столбцы. =(

Результат хотелось бы таким:

time1 time2 differ
06:00:00.0000000 07:30:00.0000000 -01:30:00.00000000


Подскажите пожалуйста как это сделать.
28 май 19, 11:50    [21895513]     Ответить | Цитировать Сообщить модератору
 Re: Как получить разницу между двумя столбцами time после их суммирования?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6695
Hopfen_Artur,

или переписать весь расчёт ещё и в DATEDIFF или вынести CTE
28 май 19, 11:53    [21895517]     Ответить | Цитировать Сообщить модератору
 Re: Как получить разницу между двумя столбцами time после их суммирования?  [new]
fkthat
Member

Откуда:
Сообщений: 1622
select sum(
    convert(float, convert(datetime, endOperation)) -
    convert(float, convert(datetime, norm))
) 
  from ...
28 май 19, 12:16    [21895551]     Ответить | Цитировать Сообщить модератору
 Re: Как получить разницу между двумя столбцами time после их суммирования?  [new]
invm
Member

Откуда: Москва
Сообщений: 8848
Hopfen_Artur
Результат хотелось бы таким:

time1 time2 differ
06:00:00.0000000 07:30:00.0000000 -01:30:00.00000000
Тип time не допускает отрицательных значений.
28 май 19, 12:41    [21895592]     Ответить | Цитировать Сообщить модератору
 Re: Как получить разницу между двумя столбцами time после их суммирования?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 100
Всем спасибо, буду все sql тогда пересчитывать.
28 май 19, 13:00    [21895623]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить