Access。年月日がバラバラのフィールドから日付フィールドを作るには?
<Access:DateSerial関数>
Excelだと、下記のような年月日がそれぞれ別のセルにある場合、一つのセルに日付を構成する場合は、DATE関数を使うことで簡単に算出することができます。一応、D2には、=DATE(A2,B2,C2)という数式が設定されています。
これと同じことを、Accessでやりたい場合は、どのようにしたらいいのでしょうか?
次のようなテーブルを用意しています。
フィールドごとに年月日ごとにデータがわかれています。
これを先ほどExcelのDATE関数で行ったことと同じことをやりたいわけです。
テーブルで行うことはできませんから、早速クエリを作っていきましょう。
【クエリで演算フィールドを作る】
Accessにも、Date関数はあるのですが、ExcelのDATE関数とは異なっています。演算フィールドを作ってみてもエラーが表示されます。DATE関数: Date([年],[月],[日])
というように、ExcelのDATE関数のように引数を設定すると、エラーが表示されます。
Date関数の引数は無しで設定します。
すると、今日の日付を算出してくれる関数です。
ExcelのTODAY関数と同じ関数の動きをするので、年月日から日付を作ることができません。
【Accessは、DateSerial関数】
そこで、Accessでは、DateSerial関数を使うことで、年月日ごとのフィールドから日付フィールドを算出することができます。年月日: DateSerial([年],[月],[日])
という演算フィールドを設定したら実行して確認してみましょう。
このように、年月日を算出するクエリを作ることができました。
【アレンジすると、ビジネスで使えるようになる】
日を32や0(ゼロ)や-1(マイナス1)とするとどうなるのか確認してみましょう。10月32日など存在しないわけですが、あえて、日を32とした場合、どうなるのか確認してみると、10月は31日までなので、その翌日の11月1日と算出してくれるわけです。
これは、+1をしているわけだから、翌日というのはイメージしやすいのです。
それでは、-1と入力したら、マイナス1だから昨日になるかと思いきや、2日前が算出されます。
0(ゼロ)と設定すると、昨日の日付が算出されるようになっていますので、少し注意が必要になってきます。
ただ、ここで覚えておくと便利なのは、月末を算出したい場合には、日フィールドには、0(ゼロ)を入力することで、ExcelのようにEOMONTH関数を使わなくても、簡単に月末を算出することができます。
この特徴は、Accessだけの特徴ではなくて、Excelでも同じ特徴をもっていますので、月末日を算出したい場合には、EOMONTH関数にこだわらなくても算出することができます。