2013-10-04 52 views
2

我需要SQL Server中的WHERE條件,我可以從給定日期返回過去7天的活動。SQL Server:在日期的X天內返回記錄

假裝我有日期[dateA]的2列[dateB]

我在尋找類似

SELECT * 
FROM TABLE 
WHERE [dateB] >= ([dateA] - 7 days) 

回答

1
select * from table 
where dateB >= dateadd(dd,-7, dateA) 
+0

爲什麼要用'dd'而不只是闡明'DAY'和更清澈?請閱讀:http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx –

+0

@Aaron,你是對。 – singsuyash

0

SELECT * FROM TABLE WHERE [dateB])> = convert(datetime,[dateA] - 7 )

你是如此接近

+0

我建議不要使用像'datetime - n'這樣的簡寫形式 - 這種方法會導致類似'DATE'和'DATETIME2'這樣的新類型失效。 http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx –

0
IF you need past 7 days activity then you need take difference of date in that column from today i.e GETDATE() it will be something like this...... 

WHERE (DATEDIFF(DAY, GETDATE(), dateA) <= 0 AND DATEDIFF(DAY, GETDATE(), dateA) > -7) 
     AND (DATEDIFF(DAY, GETDATE(), dateB) <= 0 AND DATEDIFF(DAY, GETDATE(), dateB) > -7) 
+0

可以獲取過去7天內的值必須從今天起取得與日期的差異,ColumnA和ColumnB可以具有任何值,如果您從不具有今天的日期的列中過去7天不會獲得數據。 –

相關問題