请问,已知第几周,如何知道该周的周一是几号,如何用SQL实现,谢谢! ( 积分: 37 )

  • 主题发起人 主题发起人 santu
  • 开始时间 开始时间
S

santu

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,已知第几周,如何知道该周的周一是几号,如何用SQL实现,谢谢!<br>如今天是2007年的第31周,我怎么知道31周的周一是几号。在线等待!
 
等待中...
 
心情好,写了个函数给你,呵呵<br>自己定义函数:<br>CREATE&nbsp;FUNCTION&nbsp;GetMonday(@year&nbsp;int,@WeekNo&nbsp;int)&nbsp;<br>RETURNS&nbsp;&nbsp;datetime&nbsp;&nbsp;<br>&nbsp;AS&nbsp;<br>begin<br>declare&nbsp;@Mindate&nbsp;datetime,@Maxdate&nbsp;datetime<br>declare&nbsp;@Monday&nbsp;datetime<br>select&nbsp;@Mindate=convert(datetime,convert(varchar(4),@year)+'-1-1')<br>select&nbsp;@Maxdate=convert(datetime,convert(varchar(4),@year)+'-12-31')<br>while&nbsp;@Mindate&lt;=@Maxdate<br>begin<br>&nbsp;if&nbsp;(SELECT&nbsp;DATENAME(week,@Mindate))=@WeekNo<br>&nbsp;begin<br>&nbsp;SELECT&nbsp;@Monday=(SELECT&nbsp;&nbsp;DATEADD(wk,&nbsp;&nbsp;DATEDIFF(wk,0,@Mindate),&nbsp;&nbsp;0))&nbsp;<br>&nbsp;end<br>&nbsp;SELECT&nbsp;@Mindate=(SELECT&nbsp;DATEADD(day,&nbsp;1,@Mindate))<br>end<br>return&nbsp;@Monday<br>end<br><br><br>调用:<br>select&nbsp;dbo.GetMonday(2007,7)&nbsp;&nbsp;--2007是年份,7是周数,这里是指2007年第7周的周一日期
 
SQL&nbsp;SERVER&nbsp;?<br><br>DECLARE&nbsp;@iYear&nbsp;INTEGER,@iWeek&nbsp;INTEGER,@dt1&nbsp;DateTime<br>SELECT&nbsp;@iYear=2007,@iWeek=32<br>SELECT&nbsp;@dt1=CONVERT(DateTime,CONVERT(VARCHAR(4),@iYear)+'/01/01')<br>SELECT&nbsp;@dt1+(@iWeek-1)*7-DatePart(WeekDay,@dt1)+2&nbsp;&nbsp;--周一是第二天
 
本周的星期一&nbsp;<br><br>这里我是用周(wk)的时间间隔来计算哪一天是本周的星期一。&nbsp;<br><br>SELECT&nbsp;DATEADD(wk,&nbsp;DATEDIFF(wk,0,getdate()),&nbsp;0)
 
多人接受答案了。
 
后退
顶部