在SQL Server中如何编写查询以获取startdate和enddate之间的月份,月份的天数(月份),当月的实际天数
startdate和enddate作为输入参数传递,我需要知道月份,实际天数和当月的天数
例如:
Start date : 2012-04-02
End date : 2012-08-23
我需要得到结果,
Month Days ActualDays _ inMonth
----------------------------------------------
04 29 30 - (The no of days on Apr'12 )
05 31 31
06 31 31
07 31 31
08 31 31
04个月 -
29 - (Frm startdate 2月4日至12月30日至4月12日(4月底))
30 - (12月4日的天数)
答案 0 :(得分:1)
这是一个计算一个月天数的程序。我不知道你的“实际日子”是什么意思,或者这可能有什么不同。
if object_id('spMonthList') is not null
drop procedure spMonthList
go
create procedure dbo.spMonthList(
@start date
, @end date)
as
; with Months as
(
select dateadd(month, datediff(month, 0, @start), 0) as MonthStart
union all
select dateadd(month, 1, MonthStart)
from Months
where MonthStart < @end
)
select datepart(month, MonthStart) as Month
, datediff(day, MonthStart, dateadd(month, 1, MonthStart)) as NumberOfDays
from Months;
go
exec spMonthList '2012-04-01', '2012-08-01'
- &GT;
Month NumberOfDays
4 30
5 31
6 30
7 31
8 31