「月別に受注件数を集計したい」「四半期ごとの売上推移を見たい」「曜日別の問い合わせ件数を分析したい」——Accessで日付データを扱っていると、こうした”日付の一部を取り出す”操作が必ず必要になります。そのときに欠かせないのがDatePart関数です。DatePart関数は、日付・時刻の値から「年」「月」「日」「四半期」「曜日」「週番号」「時間」「分」「秒」など、指定した単位の値を整数で返す関数です。
AccessのクエリデザインビューやVBAでDatePart関数を使うと、蓄積された日付データをさまざまな粒度で分析できます。「担当者別・月別の受注件数」「会計年度四半期ごとの売上合計」「曜日別のアクセス傾向」といった集計レポートが、DatePart関数を演算フィールドに組み込むだけで実現します。MOS Access試験(MO-500)のクエリ設計スキル領域でも、日付関数を使った演算フィールドの設定は出題範囲に含まれます。本記事では、DatePart関数の構文・引数の意味・intervalコード一覧・実務シナリオ別の活用パターン・よくあるエラーと対処法・MOS試験攻略ポイントまでステップごとに解説します。
「DatePartの引数の書き方が分からない」「クエリで月別にグループ化する方法を知りたい」「四半期の区切り方を会計年度に合わせたい」という方は、ぜひ最後まで読んでください。
DatePart関数の基本構文と引数
DatePart関数の構文は次のとおりです。
DatePart(interval, date[, firstdayofweek[, firstweekofyear]])
各引数の意味を以下の表で確認してください。
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| interval | 必須 | 取り出す単位を表す文字列(後述のintervalコード一覧を参照) |
| date | 必須 | 対象の日付・時刻を表す値またはフィールド名 |
| firstdayofweek | 省略可 | 週の始まりの曜日(省略時は日曜始まり) |
| firstweekofyear | 省略可 | 年の最初の週の判定方法(省略時は1月1日を含む週が第1週) |
実際にクエリの演算フィールドで使う場合は次のように記述します。[受注日] はフィールド名、"m" は「月」を取り出すintervalコードです。
受注月: DatePart("m", [受注日])
この式をデザイングリッドの「フィールド」行に入力すると、受注日から月の数値(1月なら1、12月なら12)を返す演算フィールドが作られます。コロンの前の「受注月」が表示上の列名(別名)、コロンの後の DatePart("m", [受注日]) が実際の計算式です。
intervalコード一覧
DatePart関数の最初の引数 interval に指定できる文字列コードを一覧にまとめます。すべて半角英字で、ダブルクォーテーションで囲んで指定します。
| intervalコード | 取り出す単位 | 返り値の例(2026/11/06 15:30の場合) |
|---|---|---|
| “yyyy” | 年(4桁) | 2026 |
| “q” | 四半期(1~4) | 4(10月~12月は第4四半期) |
| “m” | 月(1~12) | 11 |
| “y” | 年間通算日(1~366) | 310 |
| “d” | 日(1~31) | 6 |
| “w” | 曜日(1=日曜、7=土曜 ※firstdayofweek省略時) | 6(金曜日) |
| “ww” | 年間第何週(1~54) | 45 |
| “h” | 時(0~23) | 15 |
| “n” | 分(0~59) | 30 |
| “s” | 秒(0~59) | 0 |
実務でよく使うのは "yyyy"(年)・"q"(四半期)・"m"(月)・"w"(曜日)の4つです。"y"(年間通算日)は日付が年の何日目かを返し、在庫の年間経過管理などに使います。"ww"(週番号)は「今年の第何週か」を返し、週報や週次集計に便利です。
クエリで演算フィールドとして使う基本手順
ステップ1:クエリデザインビューを開く
Accessを起動し、対象のデータベースを開きます。[作成]タブ→[クエリデザイン]をクリックして新しいクエリを作成し、日付フィールドを含むテーブルを「テーブルの表示」ダイアログで追加します。必要なフィールドをデザイングリッドに追加してください。
ステップ2:演算フィールドとしてDatePart式を入力する
デザイングリッドの空白列にある「フィールド」行をクリックし、受注月: DatePart("m", [受注日]) のように入力します。コロン(:)の前が列ヘッダーに表示される名前、コロンの後が計算式です。入力後に[Enter]または別のセルをクリックすると式が確定します。
式の入力を補助したいときは、フィールド行を右クリックして「ズーム」を選ぶとズームウィンドウが開き、長い式を見やすく編集できます。また「式ビルダー」([デザイン]タブの[ビルダー]ボタン)を使うと、DatePart関数の引数ガイドを参照しながら式を組み立てられます。
ステップ3:クエリを実行して結果を確認する
[デザイン]タブの[実行]ボタン(赤い!アイコン)をクリックするか、データシートビューに切り替えます。受注日から月の整数値が取り出された新しい列が追加されていれば成功です。
実務シナリオ別の活用パターン
シナリオ1:月別に受注件数を集計する
「月ごとに何件受注があったか」を集計したい場面を想定例として示します。受注テーブルに「受注日」「受注ID」フィールドがあるとします。
| フィールド(入力内容) | 集計行の設定 | 目的 |
|---|---|---|
| 受注年: DatePart(“yyyy”, [受注日]) | グループ化 | 年でグループ化(年をまたぐデータが混在しても正しく分類) |
| 受注月: DatePart(“m”, [受注日]) | グループ化 | 月でグループ化 |
| 受注ID | カウント(Count) | 月ごとの受注件数を算出 |
このクエリを実行すると、「受注年」「受注月」「受注IDのカウント」の3列が表示され、年月ごとの受注件数が確認できます。「受注年」と「受注月」の2列でグループ化することが重要です。「受注月」だけでグループ化すると、複数年のデータが混在している場合に異なる年の同月が合算されてしまいます。
シナリオ2:四半期別に売上合計を集計する
"q"(四半期)コードを使うと、暦年の四半期(1Q:1月~3月、2Q:4月~6月、3Q:7月~9月、4Q:10月~12月)ごとに集計できます。売上テーブルに「売上日」「売上金額」フィールドがある場合の想定例を示します。
| フィールド(入力内容) | 集計行の設定 | 目的 |
|---|---|---|
| 年度: DatePart(“yyyy”, [売上日]) | グループ化 | 年でグループ化 |
| 四半期: DatePart(“q”, [売上日]) | グループ化 | 四半期(1~4)でグループ化 |
| 売上金額 | 合計(Sum) | 四半期ごとの売上合計を算出 |
DatePart("q", ...) は暦年の四半期を返します。自社の会計年度が4月始まりの場合は、DatePartを直接使うと暦年四半期との対応がずれることに注意が必要です。その場合は「月の値から3を引いた値を3で割った商に1を加算する」演算フィールドで会計年度四半期を計算する工夫が必要ですが、まず暦年四半期からデータの構造を把握するのが実践的なアプローチです。
シナリオ3:曜日別に問い合わせ件数を分析する
"w"(曜日)コードは、日付が週のうち何曜日かを1~7の整数で返します。AccessのDatePart関数は、firstdayofweek 引数を省略すると日曜始まり(日=1、月=2、火=3、水=4、木=5、金=6、土=7)で曜日番号を返します。
問い合わせテーブルに「問い合わせ日時」フィールドがある場合の想定例として、曜日別件数集計クエリを示します。
| フィールド(入力内容) | 集計行の設定 | 目的 |
|---|---|---|
| 曜日番号: DatePart(“w”, [問い合わせ日時]) | グループ化 | 曜日ごとにグループ化(1=日、2=月、…7=土) |
| 問い合わせID | カウント(Count) | 曜日ごとの件数を算出 |
返り値が1~7の整数なので、フォームやレポートで表示する際に「曜日名テーブル」と結合するか、IIf関数を使って「1→日」「2→月」のように文字列に変換すると可読性が上がります。想定例として 曜日名: Choose(DatePart("w", [問い合わせ日時]), "日", "月", "火", "水", "木", "金", "土") のように Choose関数と組み合わせる方法もあります。
シナリオ4:会計年度(4月始まり)の年度を算出する
4月始まりの会計年度を求める場合、「月が4月以上なら当年、3月以下なら前年」という判定が必要です。DatePart関数とIIf関数を組み合わせた演算フィールドで実装できます。
会計年度: IIf(DatePart("m", [売上日]) >= 4, DatePart("yyyy", [売上日]), DatePart("yyyy", [売上日]) - 1)
この式は「売上日の月が4以上(4月~12月)なら当年の年、そうでなければ(1月~3月)前年の年を返す」という意味です。これをグループ化フィールドに設定することで、4月始まり会計年度単位の集計クエリが作れます。
シナリオ5:特定の月だけを条件絞り込みに使う
DatePart関数は集計クエリの「条件(Where)」設定でも活用できます。「毎年12月だけのデータを集計する」場合、集計行を「条件(Where)」にして抽出条件に値を入力します。
| フィールド(入力内容) | 集計行の設定 | 抽出条件 | 目的 |
|---|---|---|---|
| DatePart(“m”, [受注日]) | 条件(Where) | 12 | 12月のレコードのみを集計対象にする |
| 受注ID | カウント(Count) | (なし) | 12月の受注件数を算出 |
「条件(Where)」に設定したフィールドは結果セットに表示されず、フィルタの役割のみを担います。「毎年12月」「毎年第1四半期」のような繰り返しパターンの絞り込みに便利です。
DatePartとYear・Month・Day関数との使い分け
AccessにはDatePart関数のほかに、Year()・Month()・Day()という専用関数もあります。用途に応じて使い分けると式がシンプルになります。
| 目的 | DatePart関数 | 専用関数 | 推奨 |
|---|---|---|---|
| 年の取り出し | DatePart(“yyyy”, [日付]) | Year([日付]) | どちらでも同じ結果 |
| 月の取り出し | DatePart(“m”, [日付]) | Month([日付]) | どちらでも同じ結果 |
| 日の取り出し | DatePart(“d”, [日付]) | Day([日付]) | どちらでも同じ結果 |
| 四半期の取り出し | DatePart(“q”, [日付]) | 専用関数なし | DatePartが唯一の選択肢 |
| 曜日の取り出し | DatePart(“w”, [日付]) | Weekday([日付])(VBA同等) | DatePartで統一すると管理しやすい |
| 週番号の取り出し | DatePart(“ww”, [日付]) | 専用関数なし | DatePartが唯一の選択肢 |
| 時間(時)の取り出し | DatePart(“h”, [日付時刻]) | Hour([日付時刻]) | どちらでも同じ結果 |
「四半期」「週番号」を取り出したいときはDatePart関数を必ず使います。「年・月・日」だけであれば Year()・Month()・Day() でシンプルに書けます。チームや引き継ぎを考えると、DatePart関数に統一するかYear/Month/Day専用関数を使うか、プロジェクト内でルールを統一するのが望ましいです。
firstdayofweek引数で週の始まりを設定する
DatePart関数の3番目の引数 firstdayofweek を使うと、週の始まりの曜日を指定できます。日本のビジネスでは「月曜始まり」が一般的なため、"w"(曜日)や "ww"(週番号)を使う場合はこの引数が重要になります。
| firstdayofweek値 | 意味 | 月曜始まりにしたい場合 |
|---|---|---|
| 0(省略時と同じ) | システムの地域設定に依存 | 環境によって異なるため非推奨 |
| 1 | 日曜始まり(省略時と同じ) | 使用しない |
| 2 | 月曜始まり | 日本のビジネス週報に合わせるときに指定する |
| 3 | 火曜始まり | 特殊な場合のみ |
| 4 | 水曜始まり | 特殊な場合のみ |
| 5 | 木曜始まり | 特殊な場合のみ |
| 6 | 金曜始まり | 特殊な場合のみ |
| 7 | 土曜始まり | 特殊な場合のみ |
月曜始まりの週番号を取り出す場合は次のように書きます。
週番号: DatePart("ww", [売上日], 2)
2(月曜始まり)を指定することで、週報や週次集計が日本のカレンダー感覚と一致した結果になります。
よくあるエラーと対処法
DatePart関数を使うときに遭遇しやすいエラーと対処法を整理します。
| 症状・エラー | 原因 | 対処法 |
|---|---|---|
| 「#エラー」が表示される | 対象フィールドにNullが含まれているか、テキスト型フィールドに日付文字列が格納されている | Nz関数でNullを空文字に変換するか、CDate関数で日付型に変換してから渡す。例: DatePart("m", Nz([受注日], Date())) |
| 「式に正しくない引数があります」エラー | intervalコードの文字列をダブルクォーテーションで囲んでいない | "m" のように半角ダブルクォーテーションで囲む(シングルクォーテーション不可) |
| 曜日の数値が期待と違う | firstdayofweek引数の省略で日曜始まり(日=1)になっている | 月曜始まりが必要なら第3引数に 2 を指定する |
| 四半期が暦年ではなく別のカレンダーになっている | システムの地域設定によりfirstdayofyear引数の影響を受ける場合がある | "q" は単純な暦年四半期(1Q=1~3月)を返すと確認し、会計年度四半期が必要な場合はIIf関数を組み合わせて独自計算する |
| 集計クエリで「グループ化」と「条件(Where)」の設定を間違える | DatePartの演算フィールドをグループ化に使うつもりが条件設定になっている(またはその逆) | 分類軸にするフィールドは「グループ化」、絞り込みだけに使うフィールドは「条件(Where)」に設定する |
| 年をまたいだ月データが同じ月として合算される | 「受注月」フィールドだけでグループ化していて「受注年」フィールドを追加していない | 「年」の演算フィールドも追加して「年」と「月」の2フィールドでグループ化する |
一般的なよくあるつまずきとして、テキスト型で保存されている「日付風の文字列」をDatePart関数に渡すと #エラー になるケースがあります。外部システムやExcelからインポートしたデータで日付フィールドのデータ型がテキスト型になっている場合は、テーブルのデザインビューでフィールドのデータ型を「日付/時刻型」に変更するか、CDate関数で変換してからDatePart関数を適用する必要があります。
式ビルダーでDatePart関数を入力する手順
クエリデザインビューで式ビルダーを使うと、DatePart関数の引数ガイドを参照しながら正確に式を組み立てられます。
- クエリデザインビューで演算フィールドを追加したい「フィールド」行を選択
- [クエリツール]→[デザイン]タブの「ビルダー」ボタンをクリック(または右クリック→「ビルダー」)
- 式ビルダーウィンドウが開いたら、左側ツリーで「関数」→「組み込み関数」→「日付/時刻」を選択
- 右側のリストから「DatePart」をダブルクリックすると式エリアに
DatePart(«interval»,«date»[,«firstdayofweek»[,«firstweekofyear»]])が挿入される - 各引数を実際の値に書き換える(
«interval»を"m"、«date»を[受注日]など) - [OK]をクリックすると式がフィールド行に反映される
式ビルダーを使うと関数名の入力ミスや引数の過不足を防げるため、慣れていない関数を使う際には積極的に活用してください。
MOS Access試験でのDatePart関連の出題ポイント
MOS Access 365試験(MO-500)では、クエリへの集計・演算フィールドの設定が出題範囲に含まれます。DatePart関数を含む日付演算フィールドの操作についても試験本番での操作が求められる場合があります。以下のポイントを確認しておきましょう。
- 演算フィールドの書き方:「列名: 式」の形式で入力する。コロンは半角。式の中でフィールド名は角括弧
[ ]で囲む - intervalコードの暗記:よく使う
"yyyy"(年)・"q"(四半期)・"m"(月)・"w"(曜日)の4つは確実に覚える。試験中に確認する方法として式ビルダーを使える - 集計クエリとの組み合わせ:DatePartの演算フィールドを「グループ化」に設定して月別・四半期別集計を行う操作は実務とMOS試験の両方で問われる
- 条件(Where)での絞り込み:DatePart演算フィールドの集計行を「条件(Where)」に設定して特定の月・四半期だけを集計対象にする操作
- 式ビルダーの使い方:試験では手入力でも式ビルダー経由でも正解になる。ミスを防ぐために式ビルダーを活用する習慣をつけておく
- Null処理:日付フィールドにNullが含まれる場合のエラー対処(Nz関数の組み合わせ)は発展的な内容として理解しておくと実務に役立つ
MOS試験 DatePart関連操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| 演算フィールドの追加 | クエリデザインビューの空列フィールド行に「列名: 式」の形式で入力できる | ★☆☆ |
| DatePart(“m”, …)で月を取り出す | intervalコード "m" を使って月の数値を取り出せる | ★☆☆ |
| DatePart(“q”, …)で四半期を取り出す | intervalコード "q" を使って四半期(1~4)の数値を取り出せる | ★★☆ |
| 集計クエリでグループ化に使う | DatePart演算フィールドの集計行を「グループ化」に設定して月・四半期ごとの集計ができる | ★★☆ |
| 年と月のダブルグループ化 | 年の演算フィールドと月の演算フィールドを両方グループ化して年月別集計ができる | ★★☆ |
| 条件(Where)での使用 | DatePart演算フィールドの集計行を「条件(Where)」に設定して絞り込みができる | ★★☆ |
| 曜日の取り出しと変換 | DatePart(“w”, …)で曜日番号を取り出し、Choose等で曜日名に変換できる | ★★★ |
| IIf関数との組み合わせ | 会計年度など独自の日付計算にDatePartとIIfを組み合わせた式を作成できる | ★★★ |
試験時間50分の中で正確に操作するためには、DatePart関数の構文と主要なintervalコードを手で書けるまで練習しておくことが重要です。試験対策としては、自分でAccessのサンプルデータを作り、月別集計クエリ・四半期別集計クエリを繰り返し作成・修正する練習が最も効果的です。
MOS試験の試験時間は50分、採点は1,000点満点で実施されます。合格点は非公表で550点~850点が目安とされています。合格率は公表されていません。最新の受験料は公式サイトの「受験料・価格」(https://mos.odyssey-com.co.jp/exam/examfee.html)でご確認ください。
まとめ:DatePart関数は「日付の粒度を選ぶ」関数
本記事のポイントをまとめます。
- DatePart関数とは:日付・時刻の値から指定した単位(年・月・四半期・曜日・週番号等)を整数で返す関数。構文は
DatePart(interval, date[, firstdayofweek[, firstweekofyear]]) - 主要なintervalコード:
"yyyy"(年)・"q"(四半期)・"m"(月)・"w"(曜日)・"ww"(週番号)が実務でよく使われる。四半期・週番号はDatePart関数でしか取り出せない - クエリでの使い方:デザイングリッドの「フィールド」行に
受注月: DatePart("m", [受注日])のように「列名: 式」形式で入力する - 集計クエリとの組み合わせ:DatePart演算フィールドを「グループ化」に設定することで月別・四半期別・曜日別の集計クエリが作れる。年と月は必ず両方グループ化する
- 会計年度四半期:
"q"は暦年四半期を返す。4月始まりの会計年度にはIIf(DatePart("m", [日付]) >= 4, ...)の組み合わせが必要 - 曜日の調整:月曜始まりが必要な場合はfirstdayofweek引数に
2を指定する - よくあるエラー:Nullによる
#エラー・ダブルクォーテーション不足・年をまたぐグループ化ミスに注意。式ビルダーを活用してミスを防ぐ - Year・Month・Day関数との使い分け:年・月・日はどちらでもよい。四半期・曜日・週番号はDatePart関数を使う
DatePart関数をマスターすると、テーブルに蓄積された日付データをあらゆる粒度で分析できるようになります。月別集計からスタートし、四半期集計・曜日分析・会計年度集計へとステップアップしていくことで、Accessを使ったデータ分析の幅が大きく広がります。まずは「月別の受注件数を集計する」シンプルなクエリをDatePart関数で作ってみてください。日付フィールドから任意の単位を取り出す感覚がつかめると、より複雑な集計要件にも自信を持って対応できるようになります。
PR
MOS試験シリーズの対策テキスト。AccessとExcelはMOS試験の出題形式(マルチプロジェクト形式)が共通しているため、本書でMOS試験の操作確認方法や問題の解き方のコツを把握しておくとAccess試験の学習にも応用できます。
PR
Microsoft Copilot for Microsoft 365活用大全
Microsoft 365の全アプリをAIで効率化するノウハウを網羅した一冊。Accessで集計したデータをExcelやPowerPointに展開し、Copilotでさらに分析・可視化する業務改善の全体像をつかみたい方に最適です。
