HDIFF - 2 つの日付時間値の差を計算

HDIFF 関数は、指定した構成要素単位 (日付または時間) で 2 つの日付時間値の差を計算します。

HDIFF 使用上の注意

HDIFF 関数の減算は、日付フィールドに格納されている日付構成要素を減算する DATEDIF 関数と異なります。DATEDIF 関数では、年単位の差 (満年数) または月単位の差 (満月数) が計算されます。そのため、次の 2 つの日付を減算し、月数または年数を求めると、結果は 0 (ゼロ) になります。

DATE1 12/25/2014, DATE2 1/5/2015   

HDIFF 関数を使用して同一の計算を日付時間フィールドに対して実行すると、結果は 1 か月または 1 年になります。この場合、最初に月または年が各日付時間値から抽出され、次に減算が実行されます。

2 つの日付時間値の差を計算

HDIFF(end_dt, start_dt, 'component', output)

説明

end_dt

日付時間

減算元の日付時間値です。値を含む日付時間フィールド名、または値を返す式を指定することもできます。

start_dt

日付時間

減算する日付時間値です。値を含む日付時間フィールド名、または値を返す式を指定することもできます。

component

文字

計算に使用する構成要素名です。構成要素名は一重引用符 (') で囲みます。構成要素が週の場合、計算に WEEKFIRST パラメータ設定を使用します。

output

倍精度浮動小数点数

結果を格納するフィールド名、または出力フォーマットです。フォーマットは一重引用符 (') で囲みます。フォーマットは、倍精度浮動小数点数である必要があります。

2 つの日付時間フィールドの日数差を計算

HDIFF 関数は、TRANSDATE と ADD_MONTH フィールドの日数の差を計算し、結果を D12.2 フォーマットで DIFF_PAYS に格納します。

TABLE FILE VIDEOTR2
PRINT CUSTID TRANSDATE AS 'DATE-TIME' AND COMPUTE
ADD_MONTH/HYYMDS = HADD(TRANSDATE, 'MONTH', 2, 8, 'HYYMDS');
DIFF_DAYS/D12.2 = HDIFF(ADD_MONTH, TRANSDATE, 'DAY', 'D12.2');
WHERE DATE EQ 2000;
END

出力結果は次のとおりです。

CUSTID  DATE-TIME         ADD_MONTH               DIFF_DAYS
------  ---------         ---------               ---------
1237    2000/02/05 03:30  2000/04/05 03:30:00     60.00
1118    2000/06/26 05:45  2000/08/26 05:45:00     61.00