【发布时间】:2016-03-24 08:18:36
【问题描述】:
create procedure dummy2
as
begin
declare @sDate datetime,
@eDate datetime
select @sDate = '2013-02-25',
@eDate = '2013-03-25'
;with cte as (
select convert(datetime,left(convert(varchar,@sdate,112),6) + '01') startDate ,
month(@sdate) n
union all
select dateadd(month,n,convert(datetime,convert(varchar,year(@sdate)) + '0101')) startDate,
(n+1) n
from cte
where n < month(@sdate) + datediff(month,@sdate,@edate)
)
select CONVERT(varchar(20), DATENAME(MONTH, startdate))as Months, startdate, dateadd(day,-1,dateadd(month,1,startdate)) enddate
from cte
end
Months startdate enddate
February 2013-02-01 00:00:00.000 2013-02-28 00:00:00.000
March 2013-03-01 00:00:00.000 2013-03-31 00:00:00.000
您好,我需要获取开始日期和结束日期的列表,两个日期之间的月份名称,上面是我的查询,但结果不正确..我需要如下结果
注意:开始日期和结束日期是我给出的,在这几天之间,我需要列出开始日期和结束日期的月份列表,月份名称
月 |开始日期 |结束日期
二月 | 2013-02-25 | 2013-02-28 三月 | 2013-03-01 | 2013-03-25
【问题讨论】:
-
如果你不需要时间开始使用日期作为数据类型
标签: sql-server date datetime