Sql server SQL Server:使用登录和/或注销计算运行时间
我有一个查询,提供用户登录的总小时数。我需要修改它,这样它就可以给我一个运行总数,而不用等到用户注销计算。谢谢你看 这就是我所拥有的Sql server SQL Server:使用登录和/或注销计算运行时间,sql-server,Sql Server,我有一个查询,提供用户登录的总小时数。我需要修改它,这样它就可以给我一个运行总数,而不用等到用户注销计算。谢谢你看 这就是我所拥有的 SELECT AGENTID, SUM (DATEDIFF(ss, LOGON,LOGOFF)/3600.0)AS HOURS FROM ASDM.DBO.AGENTLOGIN WHERE LOGON > '2015-10-02'AND LOGON < '2015-10-03' GROUP BY AGENTID
SELECT
AGENTID,
SUM (DATEDIFF(ss, LOGON,LOGOFF)/3600.0)AS HOURS
FROM
ASDM.DBO.AGENTLOGIN
WHERE
LOGON > '2015-10-02'AND LOGON < '2015-10-03'
GROUP BY
AGENTID
选择
阿根蒂德,
总计(DATEDIFF(ss、登录、注销)/3600.0)小时
从…起
ASDM.DBO.AGENTLOGIN
哪里
登录>'2015-10-02'和登录<'2015-10-03'
分组
阿根蒂德
由于当用户尚未注销时,注销
值将为空,因此您可以使用以下功能将其替换为当前时间:
SELECT
AGENTID,
SUM (DATEDIFF(ss, LOGON,ISNULL(LOGOFF, GETDATE()))/3600.0)AS HOURS
FROM
ASDM.DBO.AGENTLOGIN
WHERE
LOGON > '2015-10-02'AND LOGON < '2015-10-03'
GROUP BY
AGENTID
选择
阿根蒂德,
总和(DATEDIFF(ss,LOGON,ISNULL(LOGOFF,GETDATE())/3600.0)为小时
从…起
ASDM.DBO.AGENTLOGIN
哪里
登录>'2015-10-02'和登录<'2015-10-03'
分组
阿根蒂德
那么注销是空的?用当前时间替换它,如下所示:ISNULL(注销,GETDATE())
(假设您使用的是非UTC日期,否则使用GETUTCDATE
)@DavidG回答得很好。它工作得很好。