[英]SQL - Find users who never logged in for two weeks or more
Date UserID
1/1/2013 Jo1234
2/1/2013 Bob1234
2/2/2013 Bob1234
2/3/2013 Cal5678
1/4/2013 Bob1234
2/1/2013 Bob1234
2/2/2013 Bob1234
2/3/2013 Cal5678
嗨,我想找到两周或更长时间没有登录的用户
SELECT DISTINCT [UserID] FROM UsersTable
我无法使用WEEK()
因为我使用的是旧版本的 sql 感谢您的帮助
SELECT DISTINCT [UserID] FROM UsersTable WHERE DATEDIFF(DAY, myDateCol, getDate()) >= 14
SQL Server 的基本日期函数很容易找到; 如果您需要更精确的信息,请检查谷歌的日期计算。
由于您要基于两周(14 天)进行过滤,因此您可以使用以下方法将结果过滤掉:
DATEADD(DAY, -14, GETDATE()
考虑以下数据集:
CREATE TABLE Test(LastDateOfLogin DATE, UserID NVARCHAR(20))
INSERT INTO Test VALUES('11-Nov-2020', 'Jo1234')
INSERT INTO Test VALUES('01-Nov-2020', 'Bob1234')
INSERT INTO Test VALUES('02-Nov-2020', 'Bob1234')
INSERT INTO Test VALUES('03-Nov-2020', 'Cal5678')
INSERT INTO Test VALUES('03-Nov-2020', 'Bob1234')
INSERT INTO Test VALUES('12-Nov-2020', 'Bob1234')
INSERT INTO Test VALUES('15-Nov-2020', 'Bob1234')
INSERT INTO Test VALUES('05-Nov-2020', 'Cal5678')
该表将如下所示:
编写查询:
SELECT LastDateOfLogin, UserID
FROM Test
WHERE LastDateOfLogin <= DATEADD(DAY, - 14, GETDATE())
结果将是:
希望这可以帮助!!
要回答您关于 WEEK() 的部分,您是对的。 不存在这样的事情。 您必须使用 DATEPART()。
SELECT DATEPART(WW, GETDATE());
我认为你正在寻找的是
SELECT DISTINCT [UserID]
FROM UsersTable
GROUP BY [UserID]
HAVING MAX(Date) < CAST(DATEADD(WEEK, -1, GETDATE()) AS DATE)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.