5/17/2021

Access。年・月・日と別々のフィールドで管理されているのでクエリで年月日をつくりたい【DateSerial】

Access。年・月・日と別々のフィールドで管理されているのでクエリで年月日をつくりたい

<Access: DateSerial関数>

Excelだととても簡単にできることもAccessでは、できないとか、どうやったらいいのかわからないなどというケースが結構あります。


例えば、次のテーブル。


年フィールド・月フィールド・日フィールドというように、年月日を別々のフィールドで管理しているテーブルです。

日付になっていないので、期間計算など使用するとしたら、ちょっと不便です。


つまり、今回やりたいことは、「年月日をつくりたい」というわけですね。


Excelならば、DATE関数をつかうことで、簡単に年月日にすることができます。


Accessにも、Date関数が存在するのですが、使い方が全く異なっていています。


AccessのDate関数は、日付を作るというよりも、ExcelのTODAY関数に近いわけです。


例えば、=Date()とすれば、今日の日付を入力することができます。


ということで、同じ関数名であっても、処理が異なっているものがExcelとAccessの間に存在しています。


そこで、今回のように、ExcelのDate関数と同じ処理をしてくれるのが、DateSerial関数なのです。


DateSerial関数の引数を確認しておきましょう。

DateSerial ( year, month, day )


引数の「year」に注意点があって、基本数値は4桁である必要があります。


2桁だと、0~29までは、2000年~2029年と自動的に認識してくれますが、30~99だと、1930年~1999年という認識になっています。


あと、数年で2029年を迎えますので、年フィールドが2桁で使っているならば、早めに考えておく必要があるかもしれませんね。


それでは、作成タブにある「クエリデザイン」をつかって、Q年月日クエリを作っていくことにしましょう。


T年月日テーブルの全てのフィールドを今回は使用します。


そして、年月日を算出するための演算フィールドを追加します。


年月日: DateSerial([年],[月],[日])

という演算フィールドを作ってみました。


実際に入力する時には、

「[](大カッコ)」は自動的に入力してくれますので、年月日: DateSerial(年,月,日)でOKです。

入力補助機能は有効に使う方が入力ミスを抑制することができます。


それでは、実行してデータシートビューで確認してみましょう。


ご覧のように、年月日をつくることができましたね。


最初から年月日のフィールドをテーブルに作っておいて運用することができればいいのですが、様々なケースで管理運用していますので、DateSerial関数を知っているといいかもしれませんね。


Excelでは、DATE関数で、Accessでは、DateSerial関数で日付を算出するというのがポイントです。


なお、使用したT年月日の年・月・日のそれぞれのフィールドは「数値型」でしたが、「短いテキスト型」でも、DateSerial関数は、年月日を算出してくれます。