Microsoft Access Club >AccessTips >このページ >次頁 < 前項  サイト内検索


めちゃくちゃなデータを日付形式にする方法:AccessTips022



下記のようなテキストデータを日付/時刻型に変換したい場合、皆さんならどうしますか?

ID 日付
1 S42*01*02
2 S51*10*21
3 S39*09*12

これは実際にあった話なんです。もう、めちゃくちゃですよね。しかも、レコード数が4800レコードもあります。

日付データの格納は、必ず 日付/時刻型 で行わなければなりません。そして、西暦で行うべきです。和暦が希望であっても、元データは西暦として表示する際に和暦に表示変更すると割り切るべきです。

このような事例の場合は、こつこつと元データを分割します。けして、データ型ほを変換しようとしてはいけませんよ。データが消えてなくなってしまいますから…。

手順

  1. Sを取り除くために、 Right()関数 を用います。
  2. 適当なクエリを作成し、新規のフィールドに下記のような関数設定を行います。
  3. 分割日付_1: Right([日付],8)
  4. これは「日付フィールドのデータを右から8文字まで抜き取りなさい」との意味です。
  5. この結果、下記のようなクエリフィールドが現われます。
ID 日付 分割日付_1
1 S42*01*02 42*01*02
2 S51*10*21 51*10*21
3 S39*09*12 39*09*12
  1. 次に、年代を抜き取ります。サンプルデータは全て 昭和 ですから、この場合は 25年 を加えることで西暦になります。
  2. 新規のフィールドに下記のような関数設定を行います。
  3. 分割年: Left([分割日付_1],2)+25
  4. これは「分割日付_1フィールドのデータを左から2文字を抜き取りなさい」との意味です。
  5. この結果、下記のようなクエリフィールドが現われます。
ID 日付 分割日付_1 分割年
1 S42*01*02 42*01*02 67
2 S51*10*21 51*10*21 76
3 S39*09*12 39*09*12 64
  1. 次に、月を抜き取ります。これは2つの行程が必要です。
  2. 新規のフィールドに下記のような関数設定を行います。
  3. 分割日付_2: Right([分割日付_1],5)
  4. 分割月: Left([分割日付_2],2)
  5. この結果、下記のようなクエリフィールドが現われます。
ID 日付 分割日付_1 分割年 分割日付_2 分割月
1 S42*01*02 42*01*02 67 01*02 01
2 S51*10*21 51*10*21 76 10*21 10
3 S39*09*12 39*09*12 64 09*12 09
  1. 次に、日を抜き取ります。
  2. 新規のフィールドに下記のような関数設定を行います。
  3. 分割日: Right([分割日付_2],2)
  4. この結果、下記のようなクエリフィールドが現われます。
ID 日付 分割日付_1 分割年 分割日付_2 分割月 分割日
1 S42*01*02 42*01*02 67 01*02 01 02
2 S51*10*21 51*10*21 76 10*21 10 21
3 S39*09*12 39*09*12 64 09*12 09 12
  1. 基礎固めは、これで完了です。
  2. では、年と月と日をまとめて西暦を表示させましょうか。
  3. 変換日付:format(dateserial([分割年],[分割月],[分割日]),"yyyy/mm/dd")
  4. この結果、下記のようなクエリフィールドが現われます。
  5. 但し、このフィールドはまだ テキスト型 です。ご注意下さい。
ID 日付 分割日付_1 分割年 分割日付_2 分割月 分割日 変換日付
1 S42*01*02 42*01*02 67 01*02 01 02 1967/01/02
2 S51*10*21 51*10*21 76 10*21 10 21 1976/10/21
3 S39*09*12 39*09*12 64 09*12 09 12 1964/09/12
  1. 次に、この選択クエリをテーブル作成クエリに変換します。
  2. 変換の方法は、クエリをデザインビューで開きます。
  3. そして、「ツールバー」の「クエリ」から「テーブル作成」をクリックします。
  4. ダイアログが開きますので、お好きなテーブル名を命名して下さい。
  5. クエリを実行します。すると新規テーブルが作成されています。
  6. その新規テーブルをデザイビューで開き、「変換日付」のデータ型を 日付/時刻型 に変換して下さい。
  7. これで完了です。
ID 日付 分割日付_1 分割年 分割日付_2 分割月 分割日 変換日付
1 S42*01*02 42*01*02 67 01*02 01 02 1967年1月2日
2 S51*10*21 51*10*21 76 10*21 10 21 1976年10月21日
3 S39*09*12 39*09*12 64 09*12 09 12 1964年9月12日

昔のデータをAccessに取り込んだ時に、このような事例に出会うことがあるでしょうね。根気よく、こつこつと変換しましょう。では…。

 2001/03/11

ページの先頭へ 前ページへ戻る

 


めちゃくちゃなデータを日付形式にする方法:AccessTips022


 

-Microsoft Access Club-