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)