8桁の数字をyyyy/mm/ddへ変換する
こんにちは。伊川(@naonaoke)です。
今回は、選択クエリを使って、文字列をyyyy/mm/ddへ、変換します。
クエリは、あらゆるデータを、お好みの型に変換できます。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は、8桁の数字をyyyy/mm/ddに変更したいと考えています。例)20190103⇒2019/01/03クエリを勉強していますが、どのようにSQL文を書くのか分からないです。また、yyyy/mm/ddに変更したデータを元に、テーブルも更新したいと考えています。
どうしたらいいでしょうか?
解決策
・Format関数を使う・更新クエリを利用して、一気に更新する。
8桁の文字列を、Format関数で変更する

上の図のように、ランダムの数字が入力されています。
この文字列をyyyy/mm/ddに変更するには、Format関数を使います。
Format関数は、頻繁に使う関数
上の表のように、こんなに、Format関数は、たくさんのバリエーションがあります。
| 文字 | 説明 | 例 |
|---|---|---|
| : | 時刻の区切り記号 | 1970年1月1日 |
| / | 日付の区切り記号 | 2017年9月1日 |
| c | dddddおよびtttttの書式で表した日付と時刻を、日付、時刻の順で返す | 2017年9月1日 |
| d | 日付1桁の場合、先頭に0は付けない | 1~31 |
| dd | 日付1桁の場合、先頭に0を付ける | 01~31 |
| ddd | 英語(省略形)表記の曜日 | Sun~Sat |
| aaa | 日本語(省略形)表記の曜日 | 日~土 |
| dddd | 英語表記の曜日 | Sunday~Saturday |
| aaaa | 日本語(省略形)表記の曜日 | 日曜日~土曜日 |
| ddddd | 年、月、日を含むyyyy/mm/dd形式の日付 | 2017年9月1日 |
| dddddd | 年、月、日を含むmmmm dd, yyyy形式の日付 | September 01 2017 |
| w | 曜日を表す数値 | 日曜日が 1、土曜日が 7 |
| ww | その日が一年のうちで何週目かを表す数値 | 1~54 |
| m | 月1桁の場合、先頭に0は付けない | 1~12 |
| mmm | 英語(省略形)表記の月の名前 | Jan~Dec |
| mmmm | 英語表記の月の名前 | January~December |
| oooo | 日本語表記の月の名前 | 1月~12月 |
| q | 1年のうちで何番目の四半期かを表す数値 | 1~4 |
| g | 年号の頭文字 | M、T、S、H |
| gg | 年号の頭文字の漢字1文字 | 明、大、昭、平 |
| ggg | 年号 | 明治、大正、昭和、平成 |
| e | 年号に基づく和暦1桁の場合、先頭に0は付けない | 1 |
| ee | 年号に基づく和暦 | |
| y | 1年のうちで何日目かを表す数値 | 1~366 |
| yy | 西暦年の下2桁の数値 | 00~99 |
| yyyy | 西暦年の4桁の数値 | 100~9999 |
| h | 時間1桁の場合、先頭に0は付けない | 0~23 |
| hh | 時間 | |
| 1桁の場合、先頭に0は付ける | 00~23 | |
| n | 分1桁の場合、先頭に0は付けない | 0~59 |
| nn | 分 | |
| 1桁の場合、先頭に0を付ける | 00~59 | |
| s | 秒1桁の場合、先頭に0は付けない | 0~59 |
| ss | 秒 | |
| 1桁の場合、先頭に0を付ける | 00~59 | |
| ttttt | h:nn:ss形式の時刻 | 1970年1月1日 |
| AM/PM | 時刻が正午以前の場合AM正午~午後11時59分の場合PM | ー |
| am/pm | 時刻が正午以前の場合am正午~午後11時59分の場合pm | ー |
| A/P | 時刻が正午以前の場合A正午~午後11時59分の場合P | ー |
| a/p | 時刻が正午以前の場合a正午~午後11時59分の場合p | ー |
クエリにyyyy/mm/ddへ変更する



上の図の、赤枠のところに、変換する式を入力します。

上の図のようになります。
※¥マークがうまく、貼り付けることができなので、図で、貼っていますのでコピペできません。

これで変更完了です。
Cdate関数を使って、日付型へ変更します。



先頭にCdate関数をつけました。
これで、日付/時刻型に変更できました。Format関数だけでも、日付/時刻型になるのですが、後々、Dateadd関数などを利用して計算する場合があります。その時に、Cdate関数を利用しないと、エラーになったことがありましたので、伊川はCdate関数も利用するようになりました。
変更したデータを追加、更新する
変更したデータを使って、テーブルを更新します。
ACCESSを利用するのであれば、コピペのような技は使わず、クエリを使いましょう。
更新クエリ

テーブルのデザインビューであらかじめ、日時変更というフィールドを追加しておきましょう。

上の図のように設定します。
主キーはIDです。
この場合のIDはオートナンバー型なので、テーブルのIDと、クエリのIDには、絶対にズレはありません。
このようなときこそ、更新クエリの出番です。

これで完成しました。
まとめ
データベースを作成するときは、あらかじめ、抽出しやすいデータ型で入力することが肝心です。
しかし、もし、データ型が違っていても、クエリで変更することが可能です。
クエリは、重要なので、ぜひ、スキルとして、身につけましょう。
今回のサンプルファイルには練習用のファイルもいれましたので、何度も練習をして、スキルアップをめざしましょう。










