我想计算员工在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月份)。
我该怎么办?
答案 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
。