ACCESSで日付を扱うことは多いと思います。
先月の月末の日付や、来月の月初の日付など特定の日付を計算で求めたいときに使用するのがDateAdd関数です。
日付データは数値データのように計算ができないので、少し操作にコツがあります。
今回は、DateAdd関数で日付を操作する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
DateAdd関数の構文
DateAdd関数は日付型データで加算や減算をするための関数です。
以下の構文で利用します。
DateAdd ( 時間単位 , 加算する数値 , 元の日付 )
1つ目の引数である時間単位を設定することで、1年後や1か月後などの計算が可能です。
時間単位に設定可能な引数は以下の通りです。
| 引数 | 説明 |
|---|---|
| yyyy | 年 |
| q | 四半期 |
| m | 月 |
| y | 通年での日数 |
| d | 日 |
| w | 平日 |
| ww | 週 |
| h | 時 |
| n | 分 |
| s | 秒 |
使っていて注意が必要なのは、年と週ですね。
感覚的に、年が「y」だと思ってしまいますが、正しくは「yyyyy」、同じく週は「w」ではなく「ww」ですので間違えないように注意しましょう。
関数の使用例
では、実際の使用例を見てみましょう。
なお、基準となる日付は2026年1月1日です。
| 実行内容 | コード | 結果 |
|---|---|---|
| 基準日の1年後の日付を表示 | DateAdd(“yyyy”, 1, [日付]) | 2027/01/01 |
| 基準日の1か月後の日付を表示 | DateAdd(“m”, 1, [日付]) | 2026/02/01 |
| 基準日の1週間後の日付を表示 | DateAdd(“ww”, 1, [日付]) | 2026/01/08 |
| 基準日の1日後の日付を表示 | DateAdd(“d”, 1, [日付]) | 2026/01/02 |
| 基準日の1日前の日付を表示 | DateAdd(“d”, -1, [日付]) | 2025/12/31 |
2つ目の引数に正の数を設定すれば〇〇後が計算できます。
逆に最後の例のように負の数を設定すれば〇〇前を求めることができます。
クエリでの利用例
では、クエリでDateAdd関数を使って日付を操作してみましょう。
今回はサンプルテーブルとして以下の日付テーブルを準備しました。

この日付をクエリで変換していきます。
クエリデザインで、以下の日付計算クエリを作成しました。

日付テーブルをもとに、上記の関数の使用例で記載したパターンのフィールドを演算フィールドとして作成しています。
例えば、3列目は以下のように記載しています。
1年後: DateAdd("yyyy",1,[日付])
クエリで演算フィールドを作成する際は:(コロン)で区切り、右側がフィールド名、左側が計算式になります。
今回は「1年後」というフィールド名で「日付」フィールドの1年後の日付をDateAdd関数で計算しています。
これ以外のフィールドも同じような記載方法で作成しています。
クエリでフィールド名を指定する際は[]で囲うことを忘れないようにしてください。
では、データシートビューで結果を見てみましょう。

このように、様々なパターンの「日付」に対して計算した結果が右側に表示されます。
元の日付が2026/1/31の場合に1か月後の日付が2026/2/31にならずに2026/2/28と正しく計算されていますね。
単純に日を30日足しただけだとこのような考慮ができないのでDateAdd関数は便利です。
VBAでのサンプルコード
では次に、VBAのプロシージャでDateAdd関数を使用する例を提示します。
本日の日付から1年後の日付を計算してメッセージボックスに表示するプロシージャです。
Public Sub hiduke()
Dim hiduke_keisan As Date
hiduke_keisan = DateAdd("yyyy", 1, Date)
MsgBox "日付:" & hiduke_keisan, vbOKOnly + vbInformation, "日付計算結果"
End Sub
hiduke_keisanという日付型変数を用意し、DateAdd関数で日付を計算したのちに、MsgBox関数で計算結果を表示しています。
実行すると以下のようにメッセージボックスが表示されます。

実際にはVBAで日付を計算した場合はメッセージボックスに表示するよりも、フォームに表示したりテーブルの値を更新することが多いでしょう。
DateAdd関数の使用例
最後に、DateAdd関数のより具体的な使用例を紹介します。
ACCESSでは売上、請求管理のデータベースを作成することが多いので、前月末、翌月初、翌月末の日付を当日日付から求める処理はかなりよく使います。
それぞれ、記事を書いておりますのでご参照ください。
前月末を求める方法

翌月初を求める方法

翌月末を求める方法

以上、DateAdd関数で日付を操作する方法でした。
この記事の内容を実際に試したい方へ
本記事の内容を実際にACCESSを動かしながら確認したいという方向けに、記事で紹介した機能が実装されたサンプルファイルを販売しています。記事内で解説しているテーブル、クエリ、フォーム、レポート、VBAのプロシージャなどをそのまま動く形で実装しました。
学習用としてはもちろん、加工して自社業務に利用することも可能です。
ご興味のある方は以下からご覧ください。

ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。
