计算两个日期之间的第一天

时间:2015-02-04 16:25:28

标签: sql-server-2008 tsql counting

有人可以建议我如何计算两个日期之间的第一天的数量吗?

例如:02/01/201505/05/2015将计为4

2 个答案:

答案 0 :(得分:5)

可以像这样轻松完成:

DECLARE @sd DATE = '02/02/2015', @ed DATE = '05/01/2015'
SELECT DATEDIFF(mm, @sd, @ed) + CASE WHEN DAY(@sd) = 1 THEN 1 ELSE 0 END

答案 1 :(得分:2)

如果您在某处存储了一系列日期(例如在日历表中),则可以轻松计算与day(date)谓词匹配的日期。如果您没有任何合适的日期序列表,您可以使用递归公用表表达式来动态生成一个表格,如下所示:

declare @start date 
set @start = '02/01/2015'

declare @end date 
set @end = '05/05/2015'

;with dates (date) as (
    select @start date
    union all 
    select dateadd(day, 1, date) as date from dates where date < @end
    )

select count(*) no_of_firsts from dates where day(date) = 1

Sample SQL Fiddle