2016-09-22 118 views
0

我有一個表,我想要運行查詢將數據提取到csv文件。數據需要按用戶名排序,我只想輸出在過去七天內創建的人員。SQL查詢排序

到目前爲止,我可以提取我需要的數據,但不能完全確定如何實現僅圍繞過去七天的情況。我的查詢目前看起來像這樣;

SELECT 
    user_name, 
    created_date 
FROM DATABASENAME.dbo.tbl_user 
WHERE user_name LIKE 'guest-%' 

結果輸出的一行(一次在csv中)看起來像;

guest-12343,2016-09-20 19:57:50.347 

任何人都可以推薦我如何能夠適應語句更具選擇性與created_date列中的數據?

+0

你需要添加一個條件,你的日期介於'today'和'今天 - 6天'之間。 –

回答

0

您可以使用CREATED_DATE在CREATED_DATE絕不可能比現在更大。現在的問題是你如何定義「過去七天」。如果你現在才7 * 24小時想,這將是

SELECT user_name, created_date 
FROM DATABASENAME.dbo.tbl_user 
WHERE user_name like 'guest-%' 
    AND created_date >= GETDATE() - 7 

如果你希望你的7天期間是6個全日,加的今天,這將是:

SELECT user_name, created_date 
FROM DATABASENAME.dbo.tbl_user 
WHERE user_name like 'guest-%' 
    AND created_date >= CONVERT(DATE, GETDATE() - 6) 

或者,如果你想您的7天期限爲7天,不包括今天,這將是:

SELECT user_name, created_date 
FROM DATABASENAME.dbo.tbl_user 
WHERE user_name like 'guest-%' 
    AND created_date >= CONVERT(DATE, GETDATE() - 7) 
    AND created_date < CONVERT(DATE, GETDATE()) 

這是假設created_date存儲日期在服務器的時區。如果它有UTC日期,請將GETDATE()更改爲GETUTCDATE()。

+0

完美,非常感謝! –

1

日起7日內獲取數據您的WHERE子句中添加此

AND created_date >= DATEADD(day, -6, convert(date, GETDATE())) 

對於用戶名排序添加此@end

ORDER BY user_name 

所以最終的查詢將是:

SELECT user_name, created_date FROM DATABASENAME.dbo.tbl_user WHERE user_name like 'guest-%' created_date >= DATEADD(day, -7, convert(date, GETDATE())) ORDER BY user_name 
0
SELECT user_name, created_date 
FROM DATABASENAME.dbo.tbl_user 
WHERE 
    user_name like 'guest-%' 
    AND Created_Date >= CAST(GETDATE() - 7 AS DATE) 
ORDER BY user_name 

假設你從上午12:01 4天前想和[GETDATE()]您的WHERE子句