DAYS 関数

目的

日付 d に対応するリリアン形式の日数を示す FIXED BINARY(31,0) の値を返します。

構文

DAYS (d, p, w)

パラメーター

d は、日付を表す文字列式です。指定されていない場合、DAYS は DATETIME() で返された値を使用します。d の値は計算型としなければなりませんが、文字型にできるようにもする必要があります。そうでない場合、DAYS 関数は d を文字に変換します。

p は、サポートされている日付/時刻パターンです。指定されていない場合、DAYS は値 YYYYMMDDHHMISS9999 を使用します。d の値と同様に、p は計算型としなければなりませんが、文字型にできるようにもする必要があります。そうでない場合、DAYS 関数は p を文字に変換します。

w は、2 桁の年の形式に使用する世紀ウィンドウの整数の式の値です。

  • 値が正の場合、その数値が年の値として扱われます。
  • 値が負またはゼロの場合、その値がオフセットとして扱われ、システムの現在の年の値から差し引かれます。
  • 指定されていない場合、w の値は -window コンパイラ オプションで指定された値になります。

説明

DAYS 組み込み関数は、日付/時刻パターン文字列に対応する日数、または現在の日付に対応する日数を返します。

リリアン形式およびサポートされている日付/時刻パターンの詳細については、ヘルプ トピックの「日付/時刻組み込み関数」を参照してください。

この例では、DAYS 関数を使用して、リリアン暦の開始日から指定した日付までの日数を返します。

dt: proc options(main);

   dcl wkdays (7) char (6) var static init ('Sun', 'Mon', 'Tue', 'Weds', 'Thurs', 'Fri', 'Sat');

   dcl (string, pattern)   char (80)  var ;

   dcl str char (80) var;

   dcl f float bin (52);
   dcl d fixed bin (31);

   d = 0;
   string  = '14.02.2014';
   pattern = 'DD.MM.YYYY';

   put skip;
   d= days(string, pattern, 0);
   put skip list ('On Feb 14, 2014, ' || trim(d) || ' days elapsed since the start of the Lilian calendar.');

   put skip;
   put skip list ('Feb 14, 2014 was on a ' || wkdays(weekday(d)));

   put skip;
   f= secs(string, pattern, 0);
   put skip list ('On Feb 14, 2014, ' || trim(f) || ' seconds elapsed since the start of the Lilian calendar.');

   put skip;
   put skip list ('Converting the number of days elapsed back to the original pattern: ');
   str = daystodate(d, pattern);
   put skip list (str);

   put skip;
   put skip list ('Converting the number of seconds elapsed back to the original pattern: ');
   str = secstodate(f, pattern);
   put skip list (str);

   put skip;
   put skip list ("Converting the original date/time stamp to 'YYYYMMDD' : ");
   str = repattern((str), 'YYYYMMDD', pattern, 1976);
   put skip list (str);

end;

上記のコード サンプルの出力は次のようになります。

On Feb 14, 2014, 157543 days elapsed since the start of the Lilian calendar.

Feb 14, 2014 was on a Fri

On Feb 14, 2014, 1.361171520000000E+010 seconds elapsed since the start of the Lilian calendar.

Converting the number of days elapsed back to the original pattern:

14.02.2014

Converting the number of seconds elapsed back to the original pattern:

14.02.2014

Converting the original date/time stamp to 'YYYYMMDD' :

20140214

制約事項

なし。