我想得到两个日期之间的月份及其开始日期和结束日期。假设如果我输入开始日期为“2017-04-01”和结束日期为“2017-07-31”,我想要月份列表,即四月,五月、六月、七月分别有开始和结束日期。请建议我如何实现。
最佳答案
一种方法是递归 CTE:
with cte as (
select dateadd(day, 1 - day(@startdate), @startdate) as som,
eomonth(@startdate) as eom
union all
select dateadd(month, 1, som), eomonth(dateadd(month, 1, som))
from cte
where dateadd(month, 1, som) < @enddate
)
select *
from cte;
如果你想要月份的名称,那么你可以使用datename(month, som)
。
关于sql - sql server中两个日期之间的月份,其中每个日期在sql server中的开始和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45460963/