[Access 2016/2013/2010/2007]
短い文字列型(Access 2010/2007ではテキスト型)のフィールドに入力された8桁の数字の並びを(図1)、日付に変換する方法を紹介します(図2)。例えば、「20100805」は、「2010/08/05」という日付に変換されます。
スポンサーリンク
手順ダイジェスト
登録日付: DateSerial(Mid([登録日],1,4),Mid([登録日],5,2),Mid([登録日],7,2))
手順解説
(準備)Mid関数を使用して4桁、2桁、2桁に分解する
8桁の数字を日付に変換する準備として、Mid関数を使用して、8桁を年4桁、月2桁、日2桁に分解します。Mid関数は、[文字列]の[開始位置]から[文字数]分の文字列を取り出す関数です(構文1)。
構文1 文字列から部分文字列を取り出す
Mid(文字列, 開始位置, 文字数)
「年」は1文字目から4文字分なので「Mid([登録日],1,4)」、「月」は5文字目から2文字分なので「Mid([登録日],5,2)」、「日」は7文字目から2文字分なので「Mid([登録日],7,2)」で求められます。
Mid("20100805",1,4) → 2010(「20100805」の1文字目から4文字分)
Mid("20100805",5,2) → 08(「20100805」の5文字目から2文字分)
Mid("20100805",7,2) → 05(「20100805」の7文字目から2文字分)
DateSerial関数を使用して年、月、日から日付を作成する
年、月、日の3つの数値から日付を作成するには、DateSerial関数を使用します(構文2)。
構文2 年、月、日の数値から日付を作成する
DateSerial(年, 月, 日)
引数[年][月][日]に上記のMid関数を当てはめれば、8桁の数字から日付を求められます(式1、図3、図4)。本来、引数[年][月][日]には整数値を指定するべきですが、数字の文字列を指定した場合は自動で数値に変換されるので、Mid関数を直接指定しても大丈夫です。
式1 [登録日]に入力された8桁の数字から日付を求める
登録日付: DateSerial(Mid([登録日],1,4),Mid([登録日],5,2),Mid([登録日],7,2))
メモ
クエリでテーブルと同じフィールド名を付けるには
式1では、演算フィールドに「登録日付」というフィールド名を設定しました。演算フィールドにテーブルと同じフィールド名を設定すると、循環参照が原因のエラーが出てしまうからです。しかし、クエリでもテーブルと同じ「登録日」というフィールド名にしたいこともあるでしょう。そんなときは、「循環参照エラーを回避してテーブルとクエリで同じフィールド名を付ける」を参照してください。
スポンサーリンク