create table test
(
[id] int identity(1,1) not null,
[dates] date not null
)-----------
假如有这么一个表,我想利用SQL语句查出所有当前周的数据,即今天是19日礼拜四,我想查出属于这一周的所有数据.
(
[id] int identity(1,1) not null,
[dates] date not null
)-----------
假如有这么一个表,我想利用SQL语句查出所有当前周的数据,即今天是19日礼拜四,我想查出属于这一周的所有数据.
select * from test where
datediff(dd,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0),dates) between 0 and 7
FROM test
WHERE [dates] BETWEEN DATEADD(day,-(@@datefirst+1)%7,DATEADD(week,DATEDIFF(week,0,GETDATE()),0))
AND DATEADD(day,-(@@datefirst+1)%7,DATEADD(week,DATEDIFF(week,0,GETDATE()),0))+6
不好意思,写的太快,没看清题
正确的应该是
select * from test where
datediff(dd,DATEADD(wk, DATEDIFF(wk,0,getdate()), 0),dates) between 0 and 7
附上一些有意思的东西1.一个月第一天的
Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)2.本周的星期一
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)3.一年的第一天
Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)4.季度的第一天
Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)5.当天的半夜
Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)6.上个月的最后一天
Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))7.去年的最后一天
Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))8.本月的最后一天
Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))9.本年的最后一天
Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))10.本月的第一个星期一
select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
select * from test where datediff(dd, dateadd(ww, datediff(ww,0,getdate()), 0), dates) between 0 and 6
select * from test where dates between dateadd(wk,datediff(wk,0,getdate()),0) and dateadd(wk,datediff(wk,0,getdate()),6)