使用SQL Server 2008,我想计算两次之间发生的时间跨度,以秒为单位。TSQL - 在查询中计算datediff并设置一个值?
开始日期是特定ID存在的最后一次发生的时间戳(如果过滤器为真),从该时间戳记录获取时间,并针对当前处理时间并返回一个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 ID,但我无法设置@LastEventTimespan,但是试图分配一个值做数据检索时是一个没有没有。
我怎样才能解决这个问题?
谢谢。
问题是错的,我很抱歉。你打算如何处理@LastEventTimespan?由于GROUP BY会有多行,所以它也没有意义,因为它可以是任何行,也可以是不允许的。但是,如果您想要每行计算一次,则需要使用GROUP BY。而且你也不会在你的MAXed列上使用GROUP BY,所以这会让事情变得更糟 – gbn 2012-01-10 20:33:09