タイム・スタンプの差

概要

%DIFF は、2 つの日付、または時刻の値の間の差 (期間) を生成します。

解説

[一般形式]

%DIFF(2つの日付、時刻、又はタイム・スタンプ値の差

%DIFF(変数1:変数2:*MSECONDS|*SECONDS|*MINUTES|*HOURS|*DAYS|*MONTHS|*YEARS)

最初のパラメーターと 2 番目のパラメーターは、同じタイプかまたは互換性のあるタイプでなければなりません。 可能な組み合わせは以下のとおりです。
・時刻と時刻
・タイム・スタンプとタイム・スタンプ
・日付とタイム・スタンプ (タイム・スタンプの日付の部分だけが考慮されます)
・時刻とタイム・スタンプ (タイム・スタンプの時刻の部分だけが考慮されます)

3 番目のパラメーターには単位を指定します。次の単位が有効です。
・2 つの日付または日付とタイム・スタンプの場合: *DAYS、*MONTHS、および *YEARS
・2 つの時刻または時刻とタイム・スタンプの場合: *SECONDS、*MINUTES、および *HOURS
・2 つのタイム・スタンプの場合: *MSECONDS、*SECONDS、*MINUTES、 *HOURS、*DAYS、*MONTHS、および *YEARS

差異は、第 1 オペランドから第 2 オペランドを減算することによって計算されます。
結果は、すべての剰余を廃棄して切り捨てられます。たとえば、61 分は 1 時間と等しく、59 分は 0 時間に等しくなります。
関数によって戻り値は、数字タイプと期間タイプの両方と互換性があります。 結果は、数 (数値タイプ) あるいは日付、時刻、またはタイム・スタンプ (期間タイプ) に加算することができます。
32 年 9 カ月よりも離れている 2 つのタイム・スタンプの間の差をマイクロ秒単位で得たい場合は、期間の値の限界である 15 桁を超えます。この結果はエラーになるかまたは切り捨てが行なわれます。

使用例

8桁の日付をタイム・スタンプに変換し、期間差を計算。

日付形式のパラメータに関しては DATFMT(形式{区切り記号}) を参照してください。

              
_*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0
DNAME+++++++++++ETDSFROM+++TO/L+++IDC.KEYWORDS+++++++++++++++++++++++++++++COMMENTS++++++++++++
D         DS
D WD_STRYMD            8 0
D WD_ENDYMD            8 0 
D WD_CNTYMD            4 0
D*
D         DS
D ISO_STRYMD   S         D 
D ISO_ENDYMD   S         D 
C*
CL0N01FACTOR1+++++++OPCODE&EXTFACTOR2+++++++RESULT++++++++LEN++D+HILOEQ....COMMENTS++++++++++++
C           EVAL   ISO_STRYMD = %DATE(WD_STRYMD: *ISO)
C           EVAL   ISO_ENDYMD = %DATE(WD_ENDYMD: *ISO)
C*
C           EVAL   WD_CNTYMD = 
C                %DIFF(ISO_ENDYMD: ISO_STRYMD: *DAYS)