日付、時刻を扱う(CSVファイルをADOで扱う⑪)

CSVファイルをADOで扱う連載の11回目です。前回の記事はこちらになります。

hirocom777.hatenadiary.org

日付、時刻の処理

 前回は、SQLを指定してCSVファイルを確認できるツール(CSV_ReaderSQL)でADOの FORMAT による数値、文字の変換についてご紹介しました。

ところでこの FORMAT なんですが、日付や時刻のデータ変換にも使えるのです。今回はこれを中心として日付や時刻の取り扱いについてご紹介したいと思います。

今回もSQLを指定してCSVファイルを確認できるツール(CSV_ReaderSQL)を使います。ツールは以下からダウンロードしてください。

CSV_ReaderSQL110.zip - Google ドライブ

今までと同じようにCSV_ReaderSQLで操作対象のファイル(Test.csv)があるフォルダーを指定しておきましょう。

表示形式の変更

日付や時刻は自国の表示形式には色々あります。 FORMAT を使用することで表示形式を色々な形に変換できます。 以下の'Test.csv'の表示形式を変換してみましょう。

"日付","書式"
"2021/2/7","y"
"2021/2/7","yy-m-d"
"2021/2/7","yy-mm-dd"
"2021/2/7","yyyy-mmm-d ddd"
"2021/2/7","yyyy-mmmm-dd dddd"
"13時5分30秒","h:n:s"
"13時5分30秒","hh:nn:ss"
"13時5分30秒","AM/PM hh:nn:ss"
"2021/2/7 13時5分30秒","yyyy-mm-dd hh:nn:ss"

SQLコマンド欄に以下を入力して実行ボタンを押してみましょう。

  SELECT 日付,書式,FORMAT(値,書式) As 結果 FROM [Test.csv]
日付 書式 結果
2021/2/7 y 38
2021/2/7 yy-m-d 21-2-7
2021/2/7 yy-mm-dd 21-02-07
2021/2/7 yyyy-mmm-d ddd 2021-Feb-7 Sun
2021/2/7 yyyy-mmmm-dd dddd 2021-February-07 Sunday
13時5分30秒 h:n:s 13:5:30
13時5分30秒 hh:nn:ss 13:05:30
13時5分30秒 AM/PM hh:nn:ss PM 01:05:30
2021/2/7 13時5分30秒 yyyy-mm-dd hh:nn:ss 2021-02-07 13:05:30

この様に、いろいろな日付と時刻の表示形式を実現できます。書式はそれぞれ以下の機能を持っています。

記号 機能
y "y"場合、1年の何日目かを返します
"yy"の場合、西暦の下2けたを返します
"yyyy"の場合、西暦4けたを返します
m "m"の場合、月の数値を返します。
"mm"の場合、月の数値を返します。1けたの場合、先頭に0がつきます。
"mmm"の場合、月の名前を英語(省略形)で返します。
"mmmm"の場合、月の名前を英語で返します。
d "d"の場合、日付の数値を返します。
"dd"の場合、日付の数値を返します。1けたの場合、先頭に0がつきます
"ddd"の場合、曜日の名前を英語(省略形)で返します。
"dddd"の場合、曜日の名前を英語で返します。
h "h"の場合、時間の数値を返します。
"hh"の場合、時間の数値を返します。1けたの場合、先頭に0がつきます。
n "n"の場合、分の数値を返します。
"nn"の場合、分の数値を返します。1けたの場合、先頭に0がつきます。
s "s"の場合、秒の数値を返します。
"ss"の場合、秒の数値を返します。1けたの場合、先頭に0がつきます。
AM/PM 時刻が午前なら'AM'午後なら'PM'を表示する。一緒に表記される時刻は12時間制となる。

表示形式の統一

同様に日付や時刻のデータはファイル内で必ずしもこちらが期待している形式になっていないことがあります。また、異なる表示形式でのデータが混在している場合もあって好ましくありません。 FORMAT を使って表示形式を統一してみましょう。'Test.csv'が以下の内容であったとします。

"日付"
"2021-1-1"
"1/1"
"21-1-1"
"Jan-1"

日付のデータが色々な形式で入力されています。表示形式を統一してみましょう。SQLコマンド欄に以下を入力して実行ボタンを押します。

   SELECT 日付,FORMAT(日付,'YYYY/MM/DD') As 結果 FROM [Test.csv]

結果、以下の様になりました。表示形式が統一されました。

日付 結果
2021-1-1 2021/01/01
1/1 2021/01/01
21-1-1 2021/01/01
Jan-1 2021/01/01

次回は日付、時刻データの応用

 今回は、 日付、時刻の処理方法についてご紹介しました。次回は日付、時刻のデータを使って色々な処理をしてみようと思います。お楽しみに!!

hirocom777.hatenadiary.org CSVファイルをADOで扱う連載記事はコチラからどうぞ