0

従業員が1月に休暇を取った日数を計算したい.そのために、次のようにデータベースにLeave_Start_DateとLeave_End_Dateの2つの日付フィールドがあります

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 月であることです。したがって、datedifference を取得すると、値は 16 になりますが、実際には 6 が必要です (1 月だけで)。

どうすればできますか???

4

1 に答える 1

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、指定した間隔が得られます。

于 2013-01-15T07:57:14.977 に答える