Sql server 2008 如何查找(SYSDATETIME()-1)<;在下面的查询中登录\u时间?

Sql server 2008 如何查找(SYSDATETIME()-1)<;在下面的查询中登录\u时间?,sql-server-2008,tsql,Sql Server 2008,Tsql,我想计算我尝试以下查询的当前登录用户: select COUNT(*)from [dbname] where login_time < SYSDATETIME() and logout_time is NULL 从[dbname]中选择COUNT(*) 其中登录时间

我想计算我尝试以下查询的当前登录用户:

select COUNT(*)from [dbname] 
where  login_time < SYSDATETIME()   
and logout_time is NULL
从[dbname]中选择COUNT(*)
其中登录时间
但我只想获取当前日期的记录,因此我尝试:

select COUNT(*)from [dbname] 
where  ( SYSDATETIME()-1) < login_time < SYSDATETIME() 
and logout_time is NULL
从[dbname]中选择COUNT(*)
其中(SYSDATETIME()-1)
这似乎是不正确的。那么,如何正确地形成查询呢?我不能使用GETDATE()或Datetime.now(),因为它会给出与数据库中的日期时间不匹配的秒数
SELECT COUNT(*) from [dbname] 
WHERE login_time < SYSDATETIME()  
AND CONVERT(date, login_time) = CONVERT(date, getdate())
AND logout_time is NULL
其中登录时间 从SQL Server 2008开始,您希望使用
CONVERT(date,getdate())


至于查询的后面部分。。我有一种机制,可以在用户注销时清除注销时间并将其设置为NULL,并将其保存在lastlogin列中。为什么不搜索
logout\u time
为NULL?如果该领域不可靠,那么您可能需要重新考虑您的方法。如果这是一个基于web的应用程序,那么获取注销时间可能会很棘手。你希望sysdatetime-1做什么?我不认为登录时间是必要的?@PeterSmith这是她检查是否有人登录的方法。。登录时间低于当前时间=登录时间,登录时间=当前日期=今天。这涵盖了他所有的需要我想是“她”:)。还有,登录时间怎么可能是在将来呢?那是ryt。因为我有时有记录,其中登录时间是在较旧的日期,而注销时间是空的,所以即使是这些记录也会被计算在内。@PeterSmith,我很抱歉,登录时间不可能是在将来。但不检查它就等于所有与今天日期相同的内容都已登录。