问题描述
我正在sqlServer上搜索一个函数,以在日期中添加句点。我的间隔是半个月到12个月,间隔是半个月。我需要知道从当天开始的间隔的开始和结束时间,以2020-01-01为起点,每个间隔都固定在年。
注意:我不能使用存储过程,我必须在一个视图上做所有事情
解决方法
我不确定您从什么开始。但是,如果要使用参数生成数据集,则可以使用递归CTE:
declare @date date = '2020-01-01';
declare @interval decimal(10,1) = 1.5;
declare @n int = 4;
with cte as (
select @date as date,@interval as interval,@n as n,1 as lev
union all
select (case when cte.interval % 1 = 0.5 and day(v.date) = 1
then dateadd(day,14,v.date)
when cte.interval % 1 = 0.5 and day(v.date) = 15
then dateadd(day,1,eomonth(v.date))
else cte.date
end),interval,n,lev + 1
from cte cross apply
(values (dateadd(month,floor(interval),cte.date))) v(date)
where lev < n
)
select *
from cte;
Here是db 小提琴。