计算sqlserver中两天之间的天数?

时间:2013-01-15 07:02:31

标签: sql-server-2008

我想计算员工在1月份休假的天数。为此我在数据库中有两个日期字段Leave_Start_Date和Leave_End_Date,如下所示

Leave_Approval_Id      Leave_Start_Date           Leave_End_Date             EmpId 
    1               2013-01-25 00:00:00.000      2013-02-10 00:00:00.000      10

这里我的问题是Leave_End_Date是在2月份。所以当我采用过时的方式我得到的值为16,但实际上我想要的是6(仅在1月份)。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

定义您感兴趣的时间间隔,并使用case将范围值或实际值用作datediff()的参数。

declare @FromDate datetime
declare @ToDate datetime

set @FromDate = '20130101'
set @ToDate = '20130131'

select datediff(
                day, 
                case when Leave_Start_Date < @FromDate then @FromDate else Leave_Start_Date end,
                case when Leave_End_Date >= @ToDate then @ToDate else Leave_End_Date end
               )
from ....

这将为您指定的时间间隔6