Access。○ヶ月後を算出。ExcelはEDATE関数、ではAccessでは?さらに月末は?
<DateAdd関数とDateSerial関数>
この日付の1ヶ月後を求める場合、Excelだったらば、EDATE関数を使うことで算出することができますよね。
それと同じことをAccessで行うとしたらどうしたらいいのか?ということで、
○ヶ月後を求める方法をご紹介していきます。
【○ヶ月後:DateAdd関数】
次のテーブルがあって、この日付フィールドの1ヶ月後を求めていきますので、
挿入タブのクエリデザインで早速作っていきましょう。
1ヶ月後: DateAdd("m",1,[日付])
というフィールドを作ります。DateAdd関数を使い、
引数は、「”m”,1」は、1ヶ月という意味です。
数値を2にすれば、2ヶ月後とすることができます。
これだけで、日付の1ヶ月後を算出することができます。
【○週間後】
このDateAdd関数は、ExcelのEDATE関数よりも小回りが利くというか、便利な点もあります。例えば、日付の2週間後を算出しようとしたら、
EDATE関数では求めることができませんので、
今日から2週間ならば、TODAY()+14のように関数を変えて対応しますが、
AccessはこのDateAdd関数で対応できちゃいます。
“m”を”ww”として、次のように変えてみましょう。
2週間後: DateAdd("ww",2,[日付])
では、データシートビューで確認してみましょう。
御覧のように、1ヶ月後と2週間後が算出できていますね。
ところで、
”m”は月のmonthの”m”ということだろうとは推察されるかと思いますが、
”ww”。なぜ、wが2個なのか?
それは、四半期を算出するときにご紹介した区分けと同じだからなのです。
改めてご紹介すると、”m”のところを次のように変更すれば、
DateAdd関数だけで算出することが可能になります。
yyyy → ○年後を算出
m → ○月後を算出
ww → ○週後を算出
d → ○日後を算出
1年後: DateAdd("yyyy",1,[日付])というフィールドを作るとこのようになります。
きちんと、1年後を算出することができましたね。
さて、○ヶ月後は求めることをご紹介しましたので、
今月末を求める方法もご紹介してきましょう。
【月末を算出:DateSerial関数】
月末を算出するには、Excelでは、EOMONTH関数を使用すれば算出できることはご存じだと思います。
では、Accessではどのようにしたらいいのでしょうか?
そこで、登場するのは、『DateSerial関数』です。
では、次のフィールドを作っていきましょう。
月末: DateSerial(Year([日付]),Month([日付])+1,0)
データシートビューで確認してみましょう。
きちんと、月末が算出できていますね。
DateSerial関数はExcelのEOMONTH関数と考え方が異なる点があります。
DateSerial(Year([日付]),Month([日付])+1,0)
引数のYearは、年だとわかりますよね。
次の、Monthですが、+1(プラス1)していて、
さらに、Dayには、0(ゼロ)
どのようになっているのかというと、2018/1/15の場合、
2018年2月0日という日付を作ります。
当然、0日なんてものは、ないので、その前日。
つまり、前月の末日という意味になるのです。
これで、うるう年であろうが、31日だろうが、
関係なく、月末を算出することが可能になるわけなんですね。
このように、Excel関数同様に、
Access関数にも日付をコントロールする関数はありますが、
Excelと少し違うところがありますので、知っておくといいかもしれませんね。