日付を扱う関数は、たくさんあり、便利なので覚えておきましょう。
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をしています。
関数の使い方、サンプルプログラム
関数の使い方に関するサンプルプログラムがありますので、
参考にしてみてください。