【SQL】根据日期范围按月一行拆分数据

根据日期范围按月一行拆分数据

代码来源:https://www.5axxw.com/questions/content/90bwua

Select 
[WL_ID]
,YEAR(dateadd(MONTH,N,[WL_StartDate])) '年份'
,MONTH(dateadd(MONTH,N,[WL_StartDate])) '月份'
,[WL_StartDate] '开始日期'
,[WL_CancelDate] '结束日期'
 From  WhiteList 
 Join  (
        Select Top 1000 N=-1+Row_Number() Over 	(Order By (Select Null)
				)
         From  master..spt_values
       ) B on N <= datediff(MONTH,[WL_StartDate],[WL_CancelDate])

分拆前:
分拆前
分拆后:
分拆后

master…spt_values——系统表

可见:https://www.codenong.com/4273723/

字符串1:dateadd

返回已添加指定时间间隔的日期
表达式:DateAdd(interval, number, date)

interval必要:字符串表达式,是所要加上去的时间间隔。
number必要:数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。
date必要:Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。

字符串2:datediff

后面日期减去前面的日期(enddate-startdate)

表达式:datediff(datepart,startdate,enddate)
datepart:规定应在日期的哪一部分计算差额

参数设定值

datepart/interval含义简称
yearyy/yyyy
monthmm/m
daydd/d
quarter季度qq/q
Hourhh/h
minutemi,n
secondss,s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值