sql server时间分组函数

sql server时间分组函数

// starttime 为开始时间
// endtime 为结束时间
// type  分类 
// 
create   function  [dbo].[func_datelist] (@starttime datetime,@endtime datetime,@type varchar(20))   
returns   @t   table(id int,hisdate varchar(20))   
as   
    begin   
      declare @index int
      declare @tempstarttime datetime
      declare @tempendtime datetime
      set @index=0
      set @tempstarttime=@starttime
      set @tempendtime=@endtime
     while(@tempstarttime<=@tempendtime)
		begin 
			insert @t(id,hisdate) values(@index+1,convert(varchar(20),@tempstarttime,120))
			if @type ='s' --秒
				Begin set @tempstarttime=DATEADD(SECOND,1,@tempstarttime) End
			else if @type ='n' --分
				Begin set @tempstarttime=DATEADD(MINUTE,1,@tempstarttime) End
			else if @type ='h' --时
				Begin set @tempstarttime=DATEADD(HOUR,1,@tempstarttime) End
			else if  @type='d' --日
				Begin  set @tempstarttime=DATEADD(DAY,1,@tempstarttime) End
			else if  @type='m' --月
				Begin  set @tempstarttime=DATEADD(MONTH,1,@tempstarttime) End
			Else if  @type='y' --年
				Begin  set @tempstarttime=DATEADD(year,1,@tempstarttime) End
			else  
				Begin set @tempstarttime=@tempendtime End
			set @index=@index+1
		end 
	return   
end   

以月为例

// 以月为例
select hisdates,COUNT(bb.xxxxx) as value from
(select left(hisdate, 7) as hisdates from dbo.func_datelist (DATEADD(year, -1, GETDATE()), GETDATE(), 'm')) dates 
FULL OUTER JOIN
bb 
ON LEFT(CONVERT(varchar(20), bb.CASE_DATE, 120), 7) = hisdates
GROUP BY hisdates
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值