簡體   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