説明
DateSerial は、指定された年月日の日付値を返します。相対的な日付表現も処理できます。
引数
月は、たとえば、12 月を表す 12 などの整数または数値式。
アクション
DateSerial は、指定された年月日の日付値を返します。相対的な日付表現も処理できます。
用途
DateSerial の特長は、“月”引数に 1 から 12 以外の値を使用できること、および“日”引数に、その月の日数を超える値を使用できることです。このような日付は相対的な日付として処理され、DateSerial は有効な日付値を生成します。この関数を使用すると、年末、うるう年、および大の月と小の月などの特別な条件をチェックしなくても、日付計算を実行できます。次の使用例を参照してください。
例
DateSerial (1999, 6, 15)
DateSerial (2000, 1 - 7, 15)
DateSerial (1999, 1, 166)
上記の例はすべて、1999 年 6 月 15 日という日付を返します。2 番目の例は、2000 年 1 月 1 日の 7 か月前は、1999 年 6 月 15 日であると言う意味です。3 番目の例は、1999 年の 166 日目は 1999 年 6 月 15 日であることを意味しています。
DateSerial (1996 + 12, 2 + 13, 29 + 14)
2009 年 4 月 12 日を返します。これは、1996 年 2 月 29 日から 12 年 13 か月 14 日後は 2009 年 4 月 12 日であるという意味です。
日時フィールド{Orders.受注日}に対して、その月の最後の日を求めるとします。次の例では、DateSerial(Year(d), Month(d) + 1, 1) によって{Orders.受注日}の翌月の最初の日付を求め、次にそこから 1 日を引いて目的の値を計算しています。
Local DateTimeVar d := {Orders.Order Date};
DateSerial(Year(d), Month(d) + 1, 1 - 1)DateSerial をその他の日付/時刻関数と組み合わせて使用すると便利なことがあります。たとえば、{Orders.受注日}フィールドに対して、その月の最後の金曜日を求めるとします。
次の例では、月の最後の日付を見つけ、次にそこから必要な日数を引いて目的の金曜日を計算しています。1999 年 10 月のように金曜日が 5 回ある月と、1999 年 11 月のように金曜日が 4 回ある月があるので、月初の日付から計算するより、月末の日付から計算する方が簡単です。
Local DateTimeVar d1 := {Orders.Order Date};
Local DateVar d2;
d2 := DateSerial(Year(d1), Month(d1) + 1, 1 - 1);
d2 - (DayOfWeek(d2, crFriday) - 1){Orders.受注日}が 1998 年 3 月 18 日の場合は、1998 年 3 月 27 日の日付値を返します。
次の例の式は、{Orders.受注日}から 3 か月前の月の第 2 火曜日の日付を返します。
Local DateTimeVar d1 := {Orders.Order Date};
Local DateVar d2 := DateSerial(Year(d1), Month(d1) - 3, 1);
d2 + (2 * 7 - (DayOfWeek(d2, crTuesday) - 1)){Orders.受注日}が 1998 年 3 月 18 日の場合は、1997 年 12 月 9 日の日付値を返します。