PR

Access DateAdd関数の使い方|日・月・年を加算・減算する方法

クエリ
スポンサーリンク

AccessのDateAdd関数とは

AccessのDateAdd関数は、指定した日付に対して、年・月・日・時間などを加算または減算するための関数です。

例えば、「今日から7日後」「3か月後」「1年前」といった日付を計算できます。1年後に消費期限が切れる在庫数を知りたい等、日付の加算・減算といったデータ操作は、比較的多く行われます。

特に、AccessのクエリやVBAで期限日、更新日、予定日などを計算するときに広く活用されています。

DateAdd関数の基本構文

DateAdd関数は次のとおり定義されます。

DateAdd ( interval, number, date )
interval: 追加する時間間隔の文字列式。(省略不可)
number: 追加する間隔の数を表す数式を指定する。正の値 (将来の日付を取得する場合) または負の値 (過去の日付を取得する場合) を指定する。(省略不可)
date: 時間間隔を追加する日付(起点の日付)を表す Variant (Date) またはリテラル。

次に、intervalで定義できる文字列式として代表的なものは以下のとおりとなります。

文字列式 時間間隔について
yyyy 年
q 四半期
m 月
d 日
w 平日
ww 週
h 時間
n 分
s 秒

DateAdd関数の活用

クエリでDateAdd関数を用いる方法を解説します。なお、クエリの作成、演算の設定方法は以下の記事を参考にしてください。

Accessで作る購買伝票について その8 クエリ作成(演算)
クエリの中で演算による結果を反映する方法としていくつかの例を紹介します。

では、実際にどのように日付が加算・減算されるかを見ていきましょう。
任意のテーブルを作成して、日付/時刻型のフィールドを追加してください。そして、レコードに日付を入力してください。本記事では、「テーブル1」に「日付」フィールドを作成し、「2019/12/02」、「2019/04/01」「1985/04/01」の3レコードを追加してみました。

次に、クエリを作成し、 【フィールド】及び【テーブル】項目に次のように入力してください。
1列目: フィールド・・・日付、 テーブル・・・テーブル1
2列目: フィールド・・・1か月後: DateAdd(“m”,1,[日付])
3列目: フィールド・・・1か月前: DateAdd(“m”,-1,[日付])
4列目: フィールド・・・1年後: DateAdd(“yyyy”,1,[日付])
5列目: フィールド・・・1年前: DateAdd(“yyyy”,-1,[日付])

クエリの設定が完了したら、実行してみましょう。以上の操作は図1に示すとおりです。

図1 DateAdd関数の結果

いかがでしょうか。元々のレコードの日付からそれぞれ月、年での加算・減算が行われていると思います。このようにして、過去、未来の情報に変換してレコードを取得することができます。抽出条件にDateAdd関数を設定することも一つの手となります。この手法について、次で見ていきましょう。

DateAdd関数と抽出条件の組み合わせ

例えば、製造工場で材料の使用期限管理をしないといけないことを想定してください。材料を管理するためのデータベースがあるとし、材料在庫テーブルが次のようにデータを持っているとしましょう。

材料在庫テーブルのフィールド名とデータ型

フィールド名 データ型
材料 短いテキスト
数量 数値型
納入日 日付/時刻型

材料在庫テーブルのレコード

材料 数量 納入日
A材 100 2019/04/01
B材 50 2019/04/01
A材 60 2019/07/01
B材 20 2019/08/01
C材 150 2019/08/01

このとき、材料の使用期限が納入日から5か月以内とした場合に、今日(本記事を作成している日は2019年12月3日です。)の時点で使用できる各材料の数量はどれだけかを知りたい場合のデータ抽出方法を見てみましょう。
(上の表から、2019/08/01に納入したB材とC材が結果として抽出されるようにする方法です。)

まず、クエリを作成して「テーブルの追加」から材料在庫テーブルを設定します。次に、「材料」、「数量」及び「納入日」フィールドを【フィールド】項目に設定します。さらに、「納入日」フィールドの【抽出条件】項目に「>=DateAdd(“m”,-5,#2019/12/03#)」と入力してください。
※ 日付/時刻型のデータ型を表す場合には「#」で括ることになっています。
この抽出条件は、2019年12月3日より5か月前以降の日付、すなわち、2019年7月3日以降のレコードを抽出する条件となっています。なお、「>=」は不等号で「~以上」を表します。「>」とすれば、「~より大きい」を意味します。
また、可変的に使用期限を確認することが一般的だと思いますので、「#2019/12/03#」の代わりに「Now()」と入力すると、今から5か月前以降の日付を抽出条件としてくれます。

図2 DateAdd関数を用いた抽出条件の設定

今の例では、「~以降」として「>=」を用いましたが、「Between 日付1 And 日付2」とすると、「日付1から日付2までの間」を抽出条件としてくれます。

日付の表示方法を変換したい場合は

日付/時刻型は、データベースを使う上で非常に良く使うデータ型です。Format関数との組み合わせで、日付の表示方法を変更する方法についても解説しています。

Accessにおける日付/時刻型・Format関数を用いた書式変換(元号表記の仕方他)
Accessテーブルには「日付/時刻型」と呼ばれるデータ型があり、その名の通り日付、時刻を取り扱う際に定義するデータ型になります。日付/時刻型は、時間情報を取り扱う際に重宝されます。また、Format関数と組み合わせることで、その有用性は非常に高いものになります。

まとめ

日付/時刻型のデータ操作として、DateAdd関数を紹介しました。今回の内容はクエリの応用的な使用方法で、若干とっつきにくい部分もあるかもしれませんが、一度作成しておけば、有効期限管理をしたい時などに非常に役に立ちます。ToDoリストなどをAccessで作成しておいて、該当期日を過ぎた案件のみを抽出するといったことも容易にできます。ぜひ、業務効率の改善に向けてDateAdd関数を活用してみてください。

スポンサーリンク

Kindle+にサインアップして無料体験に登録する
Kindle+に登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました