select * from table where datepart(weekday,getdate())<=6 and datepart(weekday,getdate()>=5
select * from [table] where datepart(dw,getdate())>=5 and datepart(dw,getdate())<=6
最起码应该是: select * from [table] where datepart(dw,日期字段) >=5 and datepart(dw,日期字段) <=6
set datefirst 7 go select select * from table where getdate() between dateadd(day,-(datepart(dw,getdate())-6+7),getdate()) and dateadd(day,-(datepart(dw,getdate())-5),getdate())
select * from 表 where 时间字段 between dateadd(day,5-datepart(dw,getdate()),getdate()) and dateadd(day,5-datepart(dw,getdate())-7+1,getdate())
SQL Server日期计算 a. 一个月的第一天 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) b. 本周的星期一 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) c. 一年的第一天 SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) d. 季度的第一天 SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) e. 上个月的最后一天 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) f. 去年的最后一天 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) g. 本月的最后一天 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) h. 本月的第一个星期一 select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), 0) i. 本年的最后一天 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。
declare @a int 首先应该判断今天的日期和今天是星期几 set @newdate=getdate() set @a=datepart(dw,getdate()) 如果是星期一,则@a=2 那么这周四就是今天加上3天 即 dateadd(dd,3,getdate()) 那么上周五就是今天减去3天 即 dateadd(dd,-3,getdate())select * from [table] where 日期字段 between dateadd(dd,-3,getdate()) and dateadd(dd,3,getdate()) 如果是星期二,则@a=3 那么这周四就是今天加上2天 即 dateadd(dd,2,getdate()) 那么上周五就是今天减去4天 即 dateadd(dd,-4,getdate())select * from [table] where 日期字段 between dateadd(dd,-4,getdate()) and dateadd(dd,2,getdate()) 写个函数,以此类推!!
select * from [table] where 日期字段 between dateadd(dd,-4,getdate()) and dateadd(dd,2,getdate())
你这个有什么意义啊! 如果是算 >=5 和 <= 6 的,结果都是对的,假设一个日期@DATE ,如果不在上周五和本周四之间,那它也一定在某一个周五和周四之间,所以永远都对的declare @date datetimeset @date = '2005-07-07' select case when datepart(weekday,@date) < 5 Or datepart(weekday,dateadd(day,-6,@date)) > 6 Then 'YES' else 'NO' end 如果是这样还有点谱
select * from [table] where datepart(dw,日期字段) >=5 and datepart(dw,日期字段) <=6
go
select select * from table
where getdate()
between
dateadd(day,-(datepart(dw,getdate())-6+7),getdate())
and
dateadd(day,-(datepart(dw,getdate())-5),getdate())
where 时间字段 between
dateadd(day,5-datepart(dw,getdate()),getdate())
and
dateadd(day,5-datepart(dw,getdate())-7+1,getdate())
a. 一个月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
b. 本周的星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
c. 一年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
d. 季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
e. 上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
f. 去年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
g. 本月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
h. 本月的第一个星期一
select DATEADD(wk, DATEDIFF(wk,0,
dateadd(dd,6-datepart(day,getdate()),getdate())
), 0)
i. 本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。
首先应该判断今天的日期和今天是星期几
set @newdate=getdate()
set @a=datepart(dw,getdate())
如果是星期一,则@a=2
那么这周四就是今天加上3天 即 dateadd(dd,3,getdate())
那么上周五就是今天减去3天 即 dateadd(dd,-3,getdate())select * from [table] where 日期字段 between dateadd(dd,-3,getdate()) and dateadd(dd,3,getdate()) 如果是星期二,则@a=3
那么这周四就是今天加上2天 即 dateadd(dd,2,getdate())
那么上周五就是今天减去4天 即 dateadd(dd,-4,getdate())select * from [table] where 日期字段 between dateadd(dd,-4,getdate()) and dateadd(dd,2,getdate())
写个函数,以此类推!!
如果是算 >=5 和 <= 6 的,结果都是对的,假设一个日期@DATE ,如果不在上周五和本周四之间,那它也一定在某一个周五和周四之间,所以永远都对的declare @date datetimeset @date = '2005-07-07'
select case when datepart(weekday,@date) < 5 Or datepart(weekday,dateadd(day,-6,@date)) > 6 Then 'YES'
else 'NO'
end
如果是这样还有点谱