Access日付変換ツール|文字列・和暦・書式を自由に変換

文字列から日付型への変換

日付書式の変換(Format関数)

和暦・西暦の相互変換

クイック変換

よく使う日付を素早く変換できます

変換履歴(最新5件)

変換履歴はまだありません

Access日付変換とは

Microsoft Accessにおける日付変換は、データベース内の日付データを適切に管理・表示するための重要な機能です。文字列形式で保存されたデータを日付型に変換したり、日付の表示形式を変更したり、和暦と西暦を相互に変換することができます。これにより、データの一貫性を保ちながら、用途に応じた適切な形式で日付情報を扱うことが可能になります。

主な変換方法

CDate関数による変換

CDate関数は、文字列やその他のデータ型を日付型(Date型)に変換する最も基本的な関数です。日付として認識可能な文字列であれば、自動的に日付型に変換されます。時刻情報を含む文字列も処理できるため、幅広い場面で活用できます。

使用例:CDate(“2024/02/10”) → 2024/02/10の日付型データ
使用例:CDate(“2024年2月10日”) → 2024/02/10の日付型データ

DateValue関数による変換

DateValue関数は、日付を表す文字列を日付型に変換します。CDate関数との違いは、時刻情報を無視して日付部分のみを抽出する点です。年の部分が省略された場合は、現在の年が自動的に適用されます。

Format関数による書式変換

Format関数は、日付データを指定した書式の文字列に変換する最も強力で柔軟性の高い関数です。西暦・和暦の切り替え、年月日の表示順序の変更、区切り文字の指定など、あらゆる形式の日付表示が可能です。クエリやフォームで広く使用されています。

日付書式指定文字一覧

書式指定文字 説明 表示例
yyyy 西暦4桁 2024
yy 西暦2桁 24
MM 月2桁(01-12) 02
M 月1桁または2桁(1-12) 2
dd 日2桁(01-31) 10
d 日1桁または2桁(1-31) 10
ggg 和暦年号(平成、令和など) 令和
gg 和暦年号略称(平、令など)
g 和暦年号英字(H、R など) R
e 和暦年 6
aaa 曜日略称(月、火など)
aaaa 曜日完全名(月曜日など) 土曜日

具体的な変換例

西暦から和暦への変換

例1:Format(#2024/02/10#, “ggge年M月d日”) → 令和6年2月10日
例2:Format(#2024/02/10#, “gge.M.d”) → 令6.2.10
例3:Format(#1989/01/08#, “ggge年M月d日”) → 平成1年1月8日

年月のみの抽出

例1:Format(#2024/02/10#, “yyyy/MM”) → 2024/02
例2:Format(#2024/02/10#, “yyyy年MM月”) → 2024年02月

文字列から日付型への変換

例1:“20240210” → Mid関数で分割後DateSerial関数で変換
例2:“令和6年2月10日” → 文字列解析後に西暦に変換
例3:“2024-02-10” → CDate関数で直接変換可能

和暦・西暦対応表

和暦 西暦期間 略称
令和 2019年5月1日~現在 R
平成 1989年1月8日~2019年4月30日 H
昭和 1926年12月25日~1989年1月7日 S
大正 1912年7月30日~1926年12月24日 T
明治 1868年1月25日~1912年7月29日 M

よく使われる変換パターン

目的 Format関数の書式 結果例
標準形式(スラッシュ区切り) yyyy/MM/dd 2024/02/10
ハイフン区切り yyyy-MM-dd 2024-02-10
日本語形式 yyyy年MM月dd日 2024年02月10日
和暦フル表示 ggge年M月d日 令和6年2月10日
和暦簡略形式 gge.M.d 令6.2.10
曜日付き yyyy年MM月dd日(aaa) 2024年02月10日(土)
年月のみ yyyy/MM 2024/02
月日のみ MM/dd 02/10
数字のみ8桁 yyyyMMdd 20240210
アメリカ式 MM/dd/yyyy 02/10/2024

DateSerial関数の活用

DateSerial関数は、年・月・日の数値を個別に指定して日付型データを作成する関数です。文字列を分解して日付に変換する場合や、計算によって日付を生成する場合に特に有効です。

構文:DateSerial(年, 月, 日)
例1:DateSerial(2024, 2, 10) → 2024/02/10
例2:DateSerial(2024, 13, 1) → 2025/01/01(月が13なので翌年に)
例3:DateSerial(2024, 2, 0) → 2024/01/31(0日は前月末)

文字列形式別の変換方法

8桁数字形式(yyyyMMdd)

「20240210」のような8桁の数字形式は、Mid関数で年月日を抽出してからDateSerial関数で変換します。

変換式:DateSerial(Left([文字列], 4), Mid([文字列], 5, 2), Right([文字列], 2))

和暦形式(ggge年M月d日)

「令和6年2月10日」のような和暦形式から西暦に変換する場合は、年号と年を抽出して西暦年を計算した後、DateSerial関数で変換します。

ハイフンまたはスラッシュ区切り

「2024-02-10」や「2024/02/10」のような形式は、CDate関数で直接変換できます。

日付変換の注意点

データ型の確認:変換前のデータがテキスト型なのか数値型なのかを確認することが重要です。データ型によって適切な変換関数が異なります。
NULL値の処理:日付フィールドにNULL値が含まれる場合、変換関数はエラーを返します。IsNull関数やIIf関数と組み合わせてエラーを回避する必要があります。
和暦の範囲:Format関数で和暦に変換できるのは、明治6年(1873年)以降の日付のみです。それ以前の日付は正しく変換されません。
地域設定の影響:日付の解釈はWindowsの地域設定に依存します。特に月/日の順序が異なる地域では注意が必要です。

実務でよく使う変換シーン

外部データのインポート時

CSVファイルやExcelファイルから取り込んだ日付データは文字列形式のことが多いため、CDate関数やDateValue関数で日付型に変換してからテーブルに格納します。

レポート作成時

レポートで日付を表示する際、Format関数を使って「令和6年2月10日」のような読みやすい形式に変換します。特に公文書や請求書では和暦表示が求められることが多いです。

クエリでの集計時

年月単位で集計する場合、Format関数を使って「yyyy/MM」形式に変換してからグループ化します。これにより月次レポートの作成が容易になります。

データ検証時

入力された文字列が有効な日付かどうかをIsDate関数で検証してから、CDate関数で変換します。これにより不正なデータの登録を防ぎます。

よくある質問(FAQ)

Q1: 文字列「20240210」を日付型に変換するにはどうすればよいですか?
8桁の数字形式の文字列は、DateSerial関数とMid関数を組み合わせて変換します。具体的には、DateSerial(Left([文字列], 4), Mid([文字列], 5, 2), Right([文字列], 2))のように記述します。Leftで年(4桁)、Midで月(5文字目から2桁)、Rightで日(最後の2桁)を抽出して日付型に変換します。
Q2: CDate関数とDateValue関数の違いは何ですか?
CDate関数は日付と時刻の両方を変換できますが、DateValue関数は日付部分のみを抽出します。例えば、「2024/02/10 14:30」という文字列に対して、CDate関数は時刻も含めて変換しますが、DateValue関数は時刻を無視して日付のみを返します。時刻情報が不要な場合はDateValue関数を使用します。
Q3: 西暦を和暦に変換する方法を教えてください
Format関数を使用します。例えば、Format(#2024/02/10#, “ggge年M月d日”)とすると「令和6年2月10日」に変換されます。「ggg」が年号(令和)、「e」が和暦年(6)を表します。「gg」を使えば「令」、「g」を使えば「R」のように略称表示も可能です。
Q4: 和暦から西暦に変換するにはどうすればよいですか?
和暦から西暦への変換は、年号に応じて計算が必要です。令和は2018を加算(令和6年=2018+6=2024年)、平成は1988を加算、昭和は1925を加算します。IIf関数やSwitch関数を使って年号を判定し、適切な値を加算してDateSerial関数で日付型に変換します。
Q5: NULL値を含む日付フィールドを変換する時の注意点は?
NULL値に対して変換関数を適用するとエラーが発生します。Nz関数やIIf関数を使って事前にNULLチェックを行い、NULL の場合は変換をスキップするか、デフォルト値を設定します。例: IIf(IsNull([日付]), “”, Format([日付], “yyyy/MM/dd”))のように記述します。
Q6: 年月のみを抽出して表示したい場合は?
Format関数で「yyyy/MM」や「yyyy年MM月」の書式を指定します。例えば、Format([日付], “yyyy/MM”)とすると「2024/02」のように年月のみが表示されます。この形式は月次集計やレポート作成で頻繁に使用されます。
Q7: 日付の妥当性を確認してから変換するには?
IsDate関数を使って、文字列が有効な日付として認識できるかを事前に確認します。例: If IsDate([文字列]) Then CDate([文字列]) Else MsgBox “無効な日付です”のように記述することで、変換エラーを防ぎ、ユーザーに適切なメッセージを表示できます。
Q8: DateSerial関数で月に13以上を指定するとどうなりますか?
DateSerial関数は月や日に範囲外の値を指定しても自動的に調整します。例えば、DateSerial(2024, 13, 1)は2025年1月1日になります。DateSerial(2024, 2, 0)は2024年1月31日(2月の0日=1月末日)になります。この特性を利用して月末日の計算などに活用できます。

参考情報

参考文献

  • Microsoft Corporation. (2018). 日付と時刻のフィールドを書式設定する. Microsoft Support. https://support.microsoft.com/ja-jp/office/
  • たすけてACCESS. (2022). ACCESS 日付を表すデータを文字列から日付型に変換する方法. https://tasukete-access.com/
  • たすけてACCESS. (2021). ACCESS Format関数で日付を変換する方法. https://tasukete-access.com/
  • できるネット. (n.d.). Accessの「Format」関数でデータの表示形式を変換する方法. https://dekiru.net/
  • ITmedia エンタープライズ. (2015). IsDate、DateValue、DateSerial、DateAdd、DateDiffの使い方. https://atmarkit.itmedia.co.jp/