当前位置: 代码迷 >> Sql Server >> 如何在时间段找出特定周几数据
  详细解决方案

如何在时间段找出特定周几数据

热度:68   发布时间:2016-04-27 13:24:27.0
怎么在时间段找出特定周几数据
1、比如有个时间段 2012-03-1 到2012-03-20
我想找到周1 与 周3 的日期如何写
 


------解决方案--------------------
SQL code
--设置星期一是一周的第一天set datefirst 1declare @t table ( date datetime )declare @date datetimeset @date = '2012-03-01'while ( @date < '2012-03-20' )     begin        if ( datepart(w, @date) in ( 3, 5 ) )             insert into @t select  @date        set @date = dateadd(d, 1, @date)    endselect * from @t/*date-----------------------2012-03-02 00:00:00.0002012-03-07 00:00:00.0002012-03-09 00:00:00.0002012-03-14 00:00:00.0002012-03-16 00:00:00.000*/
------解决方案--------------------
SQL code
--我刚才找的是周三和周五,修正一下set datefirst 1declare @t table ( date datetime )declare @date datetimeset @date = '2012-03-01'while ( @date < '2012-03-20' )     begin        if ( datepart(w, @date) in ( 1, 3 ) )             insert into @t select  @date        set @date = dateadd(d, 1, @date)    endselect * from @t/*date-----------------------2012-03-05 00:00:00.0002012-03-07 00:00:00.0002012-03-12 00:00:00.0002012-03-14 00:00:00.0002012-03-19 00:00:00.000*/
------解决方案--------------------
SQL code
set datefirst 1declare @start datetimedeclare @end datetimeset @start = '2012-03-01'set @end = '2012-03-20';with ach as(    select dateadd(dd,number,@start) date    from master..spt_values    where [type] = 'p' and number between 0 and datediff(dd,@start,@end))select *from achwhere datepart(weekday,date) in (1,3)
------解决方案--------------------
select data from (select dateadd(day,number,'2012-3-1')data from master..spt_values where type='p' and number between 0 and datediff(dd,'2012-3-1','2012-3-20'))
t where datepart(weekday,t.data) in (1,3)
  相关解决方案