レガシー日付関数

レガシー日付関数は、整数、パック 10 進数、または文字フォーマットの日付とともに使用します。

各レガシー日付関数についての詳細は、次のトピックを参照してください。

AYM - 月数の加算または減算

AYMD - 日数の加算または減算

CHGDAT - 日付文字列の表示を変更

DMY、MDY、YMD - 2 つの日付の差を計算

DOWK および DOWKL - 曜日を検索

GREGDT - ユリウス暦から太陽暦フォーマットに変換

JULDAT - 太陽暦からユリウス暦フォーマットに変換

YM - 経過月数を計算

旧バージョンのレガシー日付関数

ここではレガシー日付関数について説明します。これらは整数または文字フォーマットの日付とともに使用します。日付操作のために使用することはお勧めしません。日付操作には、標準の日付関数および日付時間関数を使用してください。

レガシー日付関数はすべて、2000 年以降の日付をサポートします。

年が 2 桁または 4 桁の日付の使用

レガシー日付関数は、2 桁の年と 4 桁の年のいずれの日付にも対応します。2000 や 1900 など、世紀を表示する 4 桁の年は、フォーマットに I8YYMD、P8YYMD、D8YYMD、F8YYMD、A8YYMD が指定されている場合に使用できます。フィールドの長さが 6 バイトの場合、2 桁の年は、DEFCENT および YRTHRESH パラメータを使用して、世紀の値を割り当てることができます。これらのパラメータについての詳細は、『ibi™ WebFOCUS® アプリケーション作成ガイド』の「環境のカスタマイズ」を参照してください。

4 桁の年の使用

EDIT 関数は、年が 4 桁の日付を作成します。次に、JULDAT および GREGDT 関数が、これらの日付をユリウス暦および太陽暦フォーマットに変換します。

DEFINE FILE EMPLOYEE
DATE/I8YYMD = EDIT('19'|EDIT(HIRE_DATE));
JDATE/I7 = JULDAT(DATE, 'I7');
GDATE/I8 = GREGDT(JDATE, 'I8');
END
TABLE FILE EMPLOYEE
PRINT DATE JDATE GDATE
END

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

      DATE    JDATE     GDATE
      ----    -----     -----
1980/06/02  1980154  19800602
1981/07/01  1981182  19810701
1982/05/01  1982121  19820501
1982/01/04  1982004  19820104
1982/08/01  1982213  19820801
1982/01/04  1982004  19820104
1982/07/01  1982182  19820701
1981/07/01  1981182  19810701
1982/04/01  1982091  19820401
1982/02/02  1982033  19820202
1982/04/01  1982091  19820401
1981/11/02  1981306  19811102
1982/04/01  1982091  19820401
1982/05/15  1982135  19820515

2 桁の年の使用

AYMD 関数は、入力引数のレガシー日付フォーマットが 6 桁の場合、8 桁の日付を返します。DEFCENT は 19 で、YRTHRESH が 83 であるため、83 から 99 までの年値は 1983 から 1999 まで、00 から 82 までの年値は 2000 から 2082 までとして解釈されます。

SET DEFCENT=19, YRTHRESH=83
 
DEFINE FILE EMPLOYEE
NEW_DATE/I8YYMD = AYMD(EFFECT_DATE, 30, 'I8');
END
 
TABLE FILE EMPLOYEE
PRINT EFFECT_DATE NEW_DATE BY EMP_ID
END

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

EMP_ID     EFFECT_DATE    NEW_DATE
------     -----------    --------
071382660
112847612
117593129     82/11/01  2082/12/01
119265415
119329144     83/01/01  1983/01/31
123764317     83/03/01  1983/03/31
126724188
219984371
326179357     82/12/01  2082/12/31
451123478     84/09/01  1984/10/01
543729165
818692173     83/05/01  1983/05/31