在sql中查找当前日期的日期范围?
问题描述:
本周我想查找记录只是声明当前日期。 例子:在sql中查找当前日期的日期范围?
select datename(dw,getdate()) -- Example today is Friday "27-04-2012"
所以,我怎么能得到的日期范围
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
的话,我可以通过
select * from table where date>[email protected] AND date<[email protected]
答
下面是一些有用的命令,以获得周
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
的每一天,那么你将使用这些在查询中获取日期范围:
SELECT *
FROM yourTable
WHERE yourDate >= DATEADD(wk, DATEDIFF(wk,0,GETDATE()), -1) -- Sunday
AND yourDate <= DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 5) -- Saturday
答
所以,你想从这个星期只记录SELECT查询?
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)
答
的查询中其他人建议可以工作,但是你还没有定义什么是“周”。根据国家/地区和商业原因,一周可能是Sun-Sat,Mon-Sun,Mon-Fri等。
因此寻找本周第一天和最后一天的最佳解决方案可能是calendar table您可以根据需要为每个日期预先填写本周的第一天和最后几天。然后你可以使用一个简单的查询,以获得正确的开始和结束日期在查询中使用:
select @StartDate = FirstDayOfWeek, @EndDate = LastDayOfWeek
from dbo.Calendar
where BaseDate = @SomeDate
该解决方案还具有的优点是你可以用一个星期的不同定义,通过添加新的列到工作轻松您的日历表。
您需要测试一周中的哪一天,并将相关天数减去/添加到日期。 – BugFinder 2012-04-27 10:54:39