#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. это также работало для статических значений. спасибо за информацию!