日期:2014-05-17  浏览次数:20449 次

sql得到本周

我想要得到本周内要上的课程。where条件里面该怎么写呢? 
select course from tbl where begintime between datename(weekday, GETDATE()) and ......
这个后面要怎么写呢?
例如,假如今天是周2,那我要得到本周 周2至周6的课。 假如今天是周日,那要得到本周 周日至周6的课



 

------解决方案--------------------
select course from tbl where datepart(weekday,begintime)>=datepart(weekday,getdate())  and datepart(weekday,begintime)<=7

------解决方案--------------------
引用:
Quote: 引用:

select course from tbl where datepart(weekday,begintime)>=datepart(weekday,getdate())  and datepart(weekday,begintime)<=7


这个小于今天的全出来了哦,改的我有点糊涂了

------解决方案--------------------
select course from tbl where begintime between CONVERT([varchar](10),GETDATE(),(20)) and CONVERT([varchar](10),dateadd(day,6,GETDATE()),(20))

------解决方案--------------------
--定义给定的一天
DECLARE @Date DATETIME = GETDATE();
 
SELECT @Date AS '目前时间'
,DATEADD(DD,-1,@Date) AS '前一天'
,DATEADD(DD,1,@Date) AS '后一天'
/*月计算*/
,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0) AS '月初'--在SQL Server中0 代表1900-01-01,通过月运算,保证日恒久为1号
,DATEADD(DD,-1,DATEADD(MONTH,1+DATEDIFF(MONTH,0,@Date),0)) AS '月末(精确到天)'--找到下月初再扣减1天,建议使用DATEADD而不要直接“-1”
,DATEADD(SS,-1,DATEADD(MONTH,1+DATEDIFF(MONTH,0,@Date),0)) AS '月末(精确到datetime的小数位)'
,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date)-1,0) AS '上月第一天'
,DATEADD(DAY,-1,DATEADD(DAY,1-DATEPART(DAY,@Date),@Date)) AS '上月最后一天'
,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date)+1,0) AS '下月第一天'
,DATEADD(DAY,-1,DATEADD(MONTH,2,DATEADD(DAY,1-DATEPART(DAY,@Date),@Date)))  AS '下月最后一天'
/*周计算*/
,DATEADD(WEEKDAY,1-DATEPART(WEEKDAY,@Date),@Date) AS '本周第一天(周日)'--注意此处与@@datefirst的值有关
,DATEADD(WEEK,DATEDIFF(WEEK,-1,@Date),-1) AS '所在星期的星期日'--注意此处与@@datefirst的值有关