求sql语句,当前月的第m个星期n 当前月的第1个星期1语句如下select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),0) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 别人写的一个例子,返回某年某月第几个星期的开始和结束时间create proc test_p @year int,@month int,@weekday intasdeclare @date datetimeset @date=rtrim(@year)+right(100+@month,2)+'01'select [星期一]=dateadd(wk,@weekday,dateadd(day,1-(@@datefirst+datepart(dw,@date)-2)%7-1,@date)),[星期日]=dateadd(wk,@weekday,dateadd(day,7-(@@datefirst+datepart(dw,@date)-2)%7-1,@date))--测试:exec test_p 2007,4,1 create proc test_p @year int,@month int,@weekday intasdeclare @date datetimeset @date=rtrim(@year)+right(100+@month,2)+'01'select [星期一]=dateadd(wk,@weekday,dateadd(day,1-(@@datefirst+datepart(dw,@date)-2)%7-1,@date)),[星期日]=dateadd(wk,@weekday,dateadd(day,7-(@@datefirst+datepart(dw,@date)-2)%7-1,@date))go --掉了一個GO,要不然一起執行會報錯的--测试:exec dbo.test_p 2007,4,1 需要的是第几个星期几,而不是第几个星期的星期几。不过还是谢谢gahade(与君共勉) declare @int int,@weekday varchar(10),@thedate datetimeselect @int = 3,@weekday = '星期三',@thedate=getdate()declare @date datetimeset @date = dateadd(day,-day(@thedate-1),@thedate)while(MONTH(@thedate)=MONTH(@date)and @int > 0)beginif(datename(weekday,@date)=@weekday) set @int=@int-1set @date=dateadd(day,1,@date)endif(@int=0)print convert(varchar(10),dateadd(day,-1,@date),120)elseprint '没有这一天' --有点问题~~改一改:)declare @int int,@weekday varchar(10),@thedate datetimeselect @int = 3,@weekday = '星期三',@thedate=getdate()declare @date datetimeset @date = dateadd(day,-day(@thedate-1),@thedate)while((MONTH(@thedate)=MONTH(@date)or day(@thedate)=day(@date))and @int > 0)beginif(datename(weekday,@date)=@weekday) set @int=@int-1set @date=dateadd(day,1,@date)endif(@int=0)print convert(varchar(10),dateadd(day,-1,@date),120)elseprint '没有这一天' nocount off @@rowcount 执行几次复杂查询后,再查询就出错 这样的代码可以用存储过程写吗?初次接触存储,不懂,非常感谢! 表看不到全部字段数据 这个添加primary key约束语句有什么问题? 关于表中重复项合并问题 在连接到 SQL Server 2005 时,在默认的设置下SQL Server不允许进行远程连接可能会导致此失败。error:26 恢复数据库时提示超示,BAK文件大于2G,有什么办法吗? 选择关联表中的一条数据 SOS!!!!有关VFP报表 如何用b表内容替换 a表id号与b表重复的数据,a b表结构一样 求一SQL语句
create proc test_p @year int,@month int,@weekday int
as
declare @date datetime
set @date=rtrim(@year)+right(100+@month,2)+'01'
select [星期一]=dateadd(wk,@weekday,dateadd(day,1-(@@datefirst+datepart(dw,@date)-2)%7-1,@date)),
[星期日]=dateadd(wk,@weekday,dateadd(day,7-(@@datefirst+datepart(dw,@date)-2)%7-1,@date))--测试:
exec test_p 2007,4,1
as
declare @date datetime
set @date=rtrim(@year)+right(100+@month,2)+'01'
select [星期一]=dateadd(wk,@weekday,dateadd(day,1-(@@datefirst+datepart(dw,@date)-2)%7-1,@date)),
[星期日]=dateadd(wk,@weekday,dateadd(day,7-(@@datefirst+datepart(dw,@date)-2)%7-1,@date))
go --掉了一個GO,要不然一起執行會報錯的--测试:
exec dbo.test_p 2007,4,1
不过还是谢谢gahade(与君共勉)
select @int = 3,@weekday = '星期三',@thedate=getdate()
declare @date datetime
set @date = dateadd(day,-day(@thedate-1),@thedate)
while(MONTH(@thedate)=MONTH(@date)and @int > 0)
begin
if(datename(weekday,@date)=@weekday)
set @int=@int-1
set @date=dateadd(day,1,@date)
end
if(@int=0)
print convert(varchar(10),dateadd(day,-1,@date),120)
else
print '没有这一天'
select @int = 3,@weekday = '星期三',@thedate=getdate()
declare @date datetime
set @date = dateadd(day,-day(@thedate-1),@thedate)
while((MONTH(@thedate)=MONTH(@date)or day(@thedate)=day(@date))and @int > 0)
begin
if(datename(weekday,@date)=@weekday)
set @int=@int-1
set @date=dateadd(day,1,@date)
end
if(@int=0)
print convert(varchar(10),dateadd(day,-1,@date),120)
else
print '没有这一天'