Как вычесть минуты из поля datetime в SQL

#sql #datetime

#sql #datetime

Вопрос:

Пытаюсь понять, как вычесть минуты из поля datetime.

 select 
   '1' as PPCONO, b.new_SalesrepId as PPREP1, 
   MAX(a.ActualEnd - c.TimeZoneBias) as PPDATE, 
   count(b.new_SalesrepId) as PPCOUNT 
from 
   ActivityPointerBase as a
join 
   SystemUserExtensionBase as b on b.SystemUserId = a.OwnerId
join 
   UserSettingsBase as c on c.SystemUserId = b.SystemUserId
where 
   b.new_SalesrepId <> '99999999' 
   and a.ActivityTypeCode = '4201' 
   and b.new_SalesrepId is not NULL 
   and a.StateCode = '1' 
   and CONVERT(varchar(8), a.ActualEnd, 112) = '20140627'
group by 
   b.new_SalesrepId, CONVERT(varchar(8), a.ActualEnd, 112)
order by 
   b.new_SalesrepId ASC;
 

Из приведенного выше кода часть MAX(a.ActualEnd - c.TimeZoneBias) , в которой .ActualEnd — это вводимое поле datetime, а c.TimeZoneBias — это значение в минутах, которое я пытаюсь вычесть. Каждый раз, когда я его запускаю, он вычитает дни, а не минуты. В этом случае фактическое значение c.TimeZoneBias равно «300», поэтому оно вычитает 300 дней, а не 300 минут.

Ответ №1:

Я считаю, что самый простой способ — использовать арифметику:

 MAX(a.ActualEnd - c.TimeZoneBias / cast(24 * 60 as float)) as PPDATE
 

Это преобразует TimeZoneBias в доли дня.

Ответ №2:

Используется DATEADD для вычитания определенного числа из определенного интервала, например:

 DATEADD(minute,  (-1 * c.TimeZoneBias), a.ActualEnd )
 

Комментарии:

1. это также работало для статических значений. спасибо за информацию!