- 日付関数の基本的な使い方が分かる
- いろんなパータンの日付を組み立てられるようになる
Access関数の使い方をシリーズで投稿しています。
前回(2回目)は文字列操作関数の使い方を解説しました。
3回目の今回は、数ある日付関数の中から基本となる4種類をピックアップして解説していきます。
たくさんのAccess関数の中でも、日付関数は文字列操作関数と同じくらいよく使われる関数です。
日付関数をうまく使えば、月末や年度末を一発で求められるようになるので、とても便利ですね。
本記事では、Access初学者が「どの日付関数から学んだらよいか」イメージできる内容に仕上げました。
今回はテーブル「T_給油記録」を使い、日付関数の実例に沿って実演していきます。
今日の日付を取得するDate関数
日付関数の中でも基本中の基本といえるものは、今日の日付を取得するDate関数です。
新しいクエリに「T_給油記録」を追加し、Date関数を設定します。
- 今日の日付:Date()
データシートビューを確認すると、全てのレコードに今日の日付が返されました。
Dateは引数を持たないので、クエリの中で単独で使う機会はほとんどないでしょう。
どちらかと言えば、他の日付関数と組み合わせることが圧倒的に多いです。
Dateを返すだけなら、テーブルを追加する必要がないのでは?
ついそんなことを感じてしまい、試しにテーブルがない状態でDate関数を設定してみました。
ビューを切り替える時にデータシートビューを選択できない、という結果になってしまいました。
Date関数をクエリに設定するときは、テーブルを追加するのを忘れないようにしましょう。
部分だけを取り出すYear・Month・Day関数
Accessクエリでは、年月日のいずれかを取り出す関数もよく使われます。
Dateや特定の日付を引数にして使うというのが、使い方の基本です。
「T_給油記録」の「給油日」フィールドから年月日をそれぞれ取り出してみましょう。
正しい結果になっていることを確認するため、まずは「給油日」を選びます。
そして各フィールドを設定します。
- 年:Year([給油日])
- 月:Month([給油日])
- 日:Day([給油日])
データシートを確認すると、それぞれ取り出すことができました。
今度はDate関数と組み合わせてみます。
「給油日」を「Date()」に全て書き換えます。
今日の日付で年月日がそれぞれ表示されました。
日付データを組み立てるDateSeial関数
DateSerialは「年」「月」「日」のそれぞれを引数にして、自由に日付を組み立てることができる関数です。
- 第一引数・・・年(数値型)
- 第二引数・・・月(数値型)
- 第三引数・・・日(数値型)
これから、DateSerial関数を使ったいろいろな使い方を実演してみます。
DateSerial関数は長くなりがちなため、ここではズームを使います。
まずは、シンプルに「給油日」フィールドからそのままDateSerial関数を入力し、日付を返します。
- DateSerial関数:DateSerial(Year([給油日]),Month([給油日]),Day([給油日]))
データシートビューを確認すると、「DateSerial関数」フィールドに給油日と同じ日付が返されました。
これが基本的なDateSerial関数の使い方です。
以降は、いろいろなパターンの使い方を紹介します。
月末日を返す
月末日を計算するのはよく使う方法です。
次のように前月末日の式を入力してみましょう。
- 前月末:DateSerial(Year([給油日]),Month([給油日])+,0)
日付の部分だけを「0」にする理由は、初日(1日)より1日前だからと解釈すると分かりやすいでしょう。
データシートビューを確認すると、前月末日になっていることが確認できました。
当月末を計算する場合は、そのまま月に1を足します。
- 前月末:DateSerial(Year([給油日]),Month([給油日])+,0)
データシートビューを確認すると、当月末日に変わりました。
年末や年度末を返す
年末を計算する方法も覚えておきましょう。
月を13、日を0にすると、下のような式になります。
- DateSerial(Year([給油日]),13,0)
データシートビューを確認すると、年末になっているのが確認できました。
年度末の場合はさらに式が長くなります。
- 年度末:IIf(Month()>3,DateSerial(Year()+1,4,0), DateSerial(Year(),4,0))
4~12月と1~3月では計算の方法が違うので、IIf関数でパターン分けしてあげます。
月を4、日を0にしてあげましょう。
データシートビューを確認すると、年度末日になっているのが確認できました。
このようにAccessのDateSerial関数を使えば、節目となる日を簡単に計算することができるので、ぜひ使いこなせるようになっておきましょう。
期間を求めるDateDiff関数
2つの日付をもとに、期間を計算するのがDateDiff関数です。
DateDiffをうまく使うと、生年月日からの年齢も簡単に計算できます。
DateDiff関数の構文は以下のとおりです。
- 第一引数・・・期間の単位
- 第二引数・・・開始日
- 第三引数・・・終了日
第一引数に設定する期間の単位は、「y(年)」や「m(月)」などの表示形式を設定してあげます。
第二引数以降に開始日と終了日を設定します。
開始日と終了日を逆にするとマイナスで計算されます。
では、さきほどDateSerial関数で計算した「年度末日」と「給油日」の期間を計算してみましょう。
- 残り日数:DateDiff(“d”,[給油日],[年度末])
データシートビューを確認すると、期間が日単位で計算されていることを確認できました。
次に、月単位で期間を計算してみます。
- 残り月数:DateDiff(“m”,[給油日],[年度末])
期間が月単位に変わりました。
まとめ
今回は日付関数の使い方について解説しました。
他にもいろいろな日付関数がありますが、本記事で紹介した4種類の使い方が分かれば簡単に習得できるものばかりです。
また、加工した日付の表示を、「〇年〇月」といった形でさらに整えたい場合はFormat関数を活用しましょう。
Format関数は過去記事に載せていますので、そちらもセットで習得しておきたい内容です。
とにかく、文字列と日付を思い通りに関数で加工できれば、より便利なAccessデータベースを作れるようになるので、基本をしっかりと習得しておきましょう。
次回は、「D~」でつながる定義域集計関数の基本的な使い方を解説します。
本日もありがとうございました。