Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取子查询中不存在的所有记录_Sql_Sql Server - Fatal编程技术网

Sql 获取子查询中不存在的所有记录

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

我试图返回所有不在子查询中的记录,其中应该有很多记录,但我没有得到任何结果

我想要LastAccesstime日期时间没有在GETDATE 24小时内的访问时间的所有记录。这有意义吗?我尝试了不在的地方,也得到了同样的结果

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的地方?这应该行得通。我不知道为什么我把它弄得这么复杂。谢谢你:那应该行。我不知道为什么我把它弄得这么复杂。谢谢您: