use*_*738 9 sql sql-server-2005 sql-server-2008
我想在本周找到记录,只是宣布当前日期.例:
select datename(dw,getdate()) -- Example today is Friday "27-04-2012"
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能获得日期范围
start on monday "23-04-2012" or sunday "22-04-2012" As @dateStart to
end on sunday "29-04-2012" or saturday "28-04-2012" As @dateEnd
Run Code Online (Sandbox Code Playgroud)
然后我可以选择查询
select * from table where date>=@dateStart AND date<=@dateEnd
Run Code Online (Sandbox Code Playgroud)
Tar*_*ryn 15
这里有一些有用的命令来获取一周中的每一天
SELECT
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), -2) SatOfPreviousWeek,
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), -1) SunOfCurrentWeek,
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0) MondayOfCurrentWeek,
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 1) TuesOfCurrentWeek,
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 2) WedOfCurrentWeek,
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 3) ThursOfCurrentWeek,
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 4) FriOfCurrentWeek,
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 5) SatOfCurrentWeek
Run Code Online (Sandbox Code Playgroud)
然后,您将在查询中使用这些来获取日期范围:
SELECT *
FROM yourTable
WHERE yourDate >= DATEADD(wk, DATEDIFF(wk,0,GETDATE()), -1) -- Sunday
AND yourDate <= DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 5) -- Saturday
Run Code Online (Sandbox Code Playgroud)
所以你只想要本周的记录?
SELECT t.*
FROM table t
WHERE t.date >= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) / 7 * 7, 0)
AND t.date <= DATEADD(DAY, DATEDIFF(DAY, -1, GETDATE()), 0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24326 次 |
| 最近记录: |