当前位置: 代码迷 >> Sql Server >> 然后构造出 一个日期段内的 周六,周日 的 日期解决方案
  详细解决方案

然后构造出 一个日期段内的 周六,周日 的 日期解决方案

热度:343   发布时间:2016-04-27 14:27:44.0
然后构造出 一个日期段内的 周六,周日 的 日期
构造出 一个日期段内的 周六,周日 的 日期

例如 构造出 从2010-10-01 至 2010-10-31 周六,周日 的 日期 ,得到结果是

日期, 星期
2010-10-02 星期六
2010-10-09, 星期六
2010-10-16, 星期六
2010-10-23, 星期六
2010-10-30, 星期六 


是构造数据, 不是 from 表

------解决方案--------------------
SQL code
if object_id('proc_test') is not null drop procedure proc_testgocreate procedure proc_test@starttime datetime,@endtime datetimeasbegin    select 日期=convert(varchar(10),date,120),星期=week    from (        select date=dateadd(dd,number,@starttime),week=datename(weekday,dateadd(dd,number,@starttime))        from master..spt_values where type='p' and dateadd(dd,number,@starttime)<@endtime    )t where week='星期六'endgoexec proc_test '2010-10-01','2010-10-31'/*日期    星期-----------------------2010-10-02    星期六2010-10-09    星期六2010-10-16    星期六2010-10-23    星期六2010-10-30    星期六*/
------解决方案--------------------
SQL code
我稍改一下if object_id('proc_test') is not null drop procedure proc_testgocreate procedure proc_test@starttime datetime,@endtime datetimeasbegin    select 日期=convert(varchar(10),date,120),星期=week    from (        select date=dateadd(dd,number,@starttime),week=datename(weekday,dateadd(dd,number,@starttime))        from master..spt_values where type='p' and number between 0 and datediff(day,@starttime,@endtime)    )t where week='星期六'endgoexec proc_test '2010-10-01','2010-10-31'
  相关解决方案