ExcelとAccessのスキルアップをサポートするサイトです

ExcelとAccessの学習室

【Access関数入門】3回目-知っておきたいよく使う日付関数4選

この記事で学習できること
  • 日付関数の基本的な使い方が分かる
  • いろんなパータンの日付を組み立てられるようになる

Access関数の使い方をシリーズで投稿しています。

前回(2回目)は文字列操作関数の使い方を解説しました。

https://sys-daddy.com/access_funcion_of_strings/

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関数は過去記事に載せていますので、そちらもセットで習得しておきたい内容です。

https://sys-daddy.com/access_function_beginner/

とにかく、文字列と日付を思い通りに関数で加工できれば、より便利なAccessデータベースを作れるようになるので、基本をしっかりと習得しておきましょう。

次回は、「D~」でつながる定義域集計関数の基本的な使い方を解説します。


本日もありがとうございました。