9/04/2019

Access。年月日がバラバラのフィールドから日付フィールドを作るには?【Access】

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関数にこだわらなくても算出することができます。