繁体   English   中英

SQL - 查找两周或更长时间从未登录过的用户

[英]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 的基本日期函数很容易找到; 如果您需要更精确的信息,请检查谷歌的日期计算。

https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-ver15

由于您要基于两周(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM