Sql 获取子查询中不存在的所有记录
我试图返回所有不在子查询中的记录,其中应该有很多记录,但我没有得到任何结果 我想要LastAccesstime日期时间没有在GETDATE 24小时内的访问时间的所有记录。这有意义吗?我尝试了不在的地方,也得到了同样的结果Sql 获取子查询中不存在的所有记录,sql,sql-server,Sql,Sql Server,我试图返回所有不在子查询中的记录,其中应该有很多记录,但我没有得到任何结果 我想要LastAccesstime日期时间没有在GETDATE 24小时内的访问时间的所有记录。这有意义吗?我尝试了不在的地方,也得到了同样的结果 SELECT Firstname, Surname, LastAccesstime from Users WHERE NOT EXISTS ( SELECT Firstname, Surname, LastAccesstime from Users WHERE (Last
SELECT Firstname, Surname, LastAccesstime
from Users
WHERE NOT EXISTS (
SELECT Firstname, Surname, LastAccesstime from Users
WHERE (LastAccesstime) >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
AND (LastAccesstime) < DATEADD(day, DATEDIFF(day, 0, GETDATE())+1, 0)
)
该表由许多其他字段组成,包括用户ID,但这对于我的问题并不重要,因为一旦我能够返回正确的结果集,我就应该能够完成我需要做的事情
谢谢假设lastaccesstime总是在过去
SELECT * FROM Users WHERE DATEDIFF(HOUR, ISNULL(lastaccesstime, GETDATE() - 2), GETDATE()) > 24
假设lastaccesstime总是在过去,那么
SELECT * FROM Users WHERE DATEDIFF(HOUR, ISNULL(lastaccesstime, GETDATE() - 2), GETDATE()) > 24
理查德的回答肯定是正确的。但是,datediff不是合适的函数。它统计两个日期/时间值之间的边界数。因此,2016-01-01 23:59和2016-01-02 00:01因为午夜边界而相隔一天 在SQL Server中,最好对日期进行直接比较:
SELECT u.*
FROM users u
WHERE u.lastaccesstime < DATEADD(day, -1, GETDATE());
理查德的回答肯定是正确的。但是,datediff不是合适的函数。它统计两个日期/时间值之间的边界数。因此,2016-01-01 23:59和2016-01-02 00:01因为午夜边界而相隔一天 在SQL Server中,最好对日期进行直接比较:
SELECT u.*
FROM users u
WHERE u.lastaccesstime < DATEADD(day, -1, GETDATE());
你能不能只做datediffhour,lastaccesstime,getdate>24的地方?你能不能只做datediffhour,lastaccesstime,getdate>24的地方?这应该行得通。我不知道为什么我把它弄得这么复杂。谢谢你:那应该行。我不知道为什么我把它弄得这么复杂。谢谢您: