日付を扱う関数は、たくさんあり、便利なので覚えておきましょう。

DateAdd()

指定した時間後の日付を計算する関数です

書式は、DateAdd(単位,追加の値,起算日)

単位は年の場合は”yyyy”、月の場合は”m”、日の場合は”d”、週の場合は”ww”等となります。

使い方の例としては、

今日の一ヵ月後の場合・・
=DateAdd(”m”,1,[今日の日付])
(ただし、2005/03/31の一ヶ月後は2005/4/30となります。)

追加の値を負の数値にすると期間の前の日付を返します

DateValue()

文字列で指定された日付を日付型に変換する関数です

書式は、DateValue(文字列の日付)

=DateValue(“2005年12月15日”)
文字列は、次のような例があります。
“2018/11/24”
“2018年11月20日”
“平成29年10月23日”
“H30/2/4”

フォームの中で使っている、売上日が、10日を過ぎれば、請求日が翌月15日で、
10日までなら請求日は今月15日というような場合を考えてみますと・・・

If Format(Me![売上日], “dd”) > 10 Then
Me![請求日] = DateValue(Format(DateAdd(“m”, 1, Me![売上日]), “yyyy””年””mm””月””15日”))
Else
Me![請求日] = DateValue(Format(Me![売上日], “yyyy””年””mm””月””15日”))
End If

IsDate()

文字列が日付型に変換できるがどうか調べる関数です
DateValue()関数を使う前のチェックなどに使います

書式は、IsDate(日付の文字列)

= IsDate(“2005年12月15日”)
日付型に変換できる場合は、True(-1)、できない場合は、False(0)を返します

文字列として入力された[指定日]が日付型に変換できる場合は、日付を返し、そうでない場合は、”変換出来ません”を返す場合
=IIf(IsDate([指定日]),DateValue([指定日]),”変換出来ません”)

このサイトのサンプルでは次のような使い方をしています。
If IsDate([生年月日]) = 0 Then
 MsgBox “日付の入力が間違っています。”, , “”
 DoCmd.CancelEvent
 DoCmd.GoToControl “生年月日”
Else
 [生年月日日付] = DateValue([生年月日])
End If

DateDiff()

2つの日付の間隔を求める関数です。
書式は、DateDiff(単位,日付1,日付2)

間隔の単位は次のようになります
 ”yyyy”で年数
 ”m”で月数
 ”d”で日数
 他にも週、分等があります。

生年月日から、今の年齢を計算してみます
フォームのコントロールやクエリーで、日付型の[生年月日]を使って次のように計算できます
(Date()は今現在の日付を表す関数です)

IIf(Format(Date(),”mmdd”)>=Format([生年月日],”mmdd”),DateDiff(“yyyy”,[生年月日],Date()),DateDiff(“yyyy”,[生年月日],Date())-1)

誕生日が到来しているかどうかの判定を、IIfの条件式で判断して、誕生日が来ていない場合は、マイナス1をしています。