Используя SQL Server 2008, я хочу рассчитать промежуток времени в секундах, который произошел между двумя временами.TSQL - Вычисление датированного в запросе и установка значения?
Дата начала - это временная отметка последнего события, в котором существует конкретный идентификатор (если фильтр является истинным), получить время от этой записи метки времени и выполнить DATEDIFF() против текущего времени обработки и возврата значение, @LastEventTimespan, в секундах.
DECLARE @CurrentProcessTime DATETIME
DECLARE @LastEventTimespan DATETIME
SET @CurrentProcessTime = GetDate()
-- find the timespan since the last session event
-- DATEDIFF (datepart , startdate , enddate)
SELECT MAX(PageVisitEventID) AS LastPageVisitEventID, @LastEventTimespan = DATEDIFF(second , DateAdded , @CurrentProcessTime)
FROM PageVisitEvents
WHERE UserID = @UserID
GROUP BY LastPageVisitEventID
Я полагал, что я мог бы получить MAX идентификатор фильтра и процесса соответственно, но я не в состоянии установить @LastEventTimespan, однако не пытается присвоить значение при выполнении данных-поиска документов нет-нет.
Как я могу обойти это?
Спасибо.
Вопрос в том, что я ошибаюсь. Извините. Что вы планируете делать с @LastEventTimespan? Учитывая, что у вас будет несколько строк из-за GROUP BY, это также бессмысленно, потому что это может быть любая из строк, а также не разрешена. Однако вам понадобится GROUP BY, если вы хотите, чтобы он вычислял его в строке. И вы не GROUP BY в своей MAXed колонке так или иначе, так что это ухудшает ситуацию – gbn