SQL输出周末日期

67 篇文章 0 订阅
18 篇文章 0 订阅

已知开始日期和结束日期:  2015-11-01 ,2015-11-30,获得时间范围内的周六和周日的日期
返回日期和星期几两列

2015-11-01,日
2015-11-07,六
2015-11-08,日
2015-11-14,六
2015-11-15,日
2015-11-21,六
2015-11-22,日
2015-11-28,六
-- SQL如下

方法1)

Select  dt,  case  when  DATEPART(dw,dt)=1  then  '日'  else  '六'  end 
from  (
select  convert (datetime, '2015-11-01' )+number dt
from  master..spt_values 
where  type= 'P' 
and  convert (datetime, '2015-11-01' )+number<= CONVERT (datetime,  '2015-11-30' )
)aa
where  DATEPART(dw,dt)  in  (1,7)

/*-----------------------------------------------------------------------------------*/
方法2)

declare  @sdate datetime,@edate datetime,@i  int ,@j  int ,@k  int 
set  @sdate= '2015-11-01'
set  @edate= '2015-11-30'
set  @i =0
select  @j=DATEDIFF(DD,@sdate,@edate)
create  table  #tab
(
[ date ] datetime,
[week]  varchar (4)
)
 
while (@i<= @j)
begin
     select  @k= datepart(weekday, DATEADD(DD,@i,@sdate))
     if(@k=1  or  @k=7)
     begin 
     insert  into  #tab
     select  DATEADD(DD,@i,@sdate), case  when   datepart(weekday, DATEADD(DD,@i,@sdate))=1  then  '日'  else  '六'  end
     end
     set  @i=@i+1
end
 
select  convert ( varchar (20),[ date ],23)  as  [ date ],[week]  from  #tab
drop  table  #tab


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值