レガシー日付関数
レガシー日付関数は、整数、パック 10 進数、または文字フォーマットの日付とともに使用します。
各レガシー日付関数についての詳細は、次のトピックを参照してください。
旧バージョンのレガシー日付関数
ここではレガシー日付関数について説明します。これらは整数または文字フォーマットの日付とともに使用します。日付操作のために使用することはお勧めしません。日付操作には、標準の日付関数および日付時間関数を使用してください。
レガシー日付関数はすべて、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