YM - 経過月数を計算

YM 関数は、2 つの日付間の月数を計算します。日付は年月フォーマットである必要があります。CHGDAT または EDIT 関数を使用することにより、日付をこのフォーマットに変換することができます。

経過月数を計算

YM(fromdate, todate, output)

説明

fromdate

I4YM または I6YYM

年月日の開始日付です (例、I4YM)。日付が有効でない場合、この関数は 0 (ゼロ) を返します。

todate

I4YM または I6YYM

整数年月フォーマットのレガシー日付です。日付が有効でない場合、この関数は 0 (ゼロ) を返します。

output

整数

結果を格納するフィールド名、または出力フォーマットです。フォーマットは一重引用符 (') で囲みます。

ヒント:fromdate または todate が整数の年月日フォーマット (I6YMD または I8YYMD) の場合、年月フォーマットを変換し、結果を整数に設定するには、100 で除算します。これにより日付の日の部分が削除されます。日は、小数部分で表されます。

経過月数を計算

COMPUTE コマンドは、年月日の日付を年月フォーマットに変換します。その後、YM は HIRE_DATE/100 と DAT_INC/100 フィールドの値の差を計算します。

TABLE FILE EMPLOYEE
PRINT DAT_INC AS 'RAISE DATE' AND COMPUTE
HIRE_MONTH/I4YM = HIRE_DATE/100; NOPRINT AND COMPUTE
MONTH_INC/I4YM = DAT_INC/100; NOPRINT AND COMPUTE
MONTHS_HIRED/I3 = YM(HIRE_MONTH, MONTH_INC, 'I3');
BY LAST_NAME BY FIRST_NAME BY HIRE_DATE
IF MONTHS_HIRED NE 0
WHERE DEPARTMENT EQ 'MIS';
END

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

LAST_NAME     FIRST_NAME  HIRE_DATE  RAISE DATE  MONTHS_HIRED
---------     ----------  ---------  ----------  ------------
CROSS         BARBARA      81/11/02    82/04/09             5
GREENSPAN     MARY         82/04/01    82/06/11             2
JONES         DIANE        82/05/01    82/06/01             1
MCCOY         JOHN         81/07/01    82/01/01             6
SMITH         MARY         81/07/01    82/01/01             6