今回のテーマ
日付データを「yyyy/mm/dd形式で」「yyyy年mm月dd日形式で」表示したい場合もあると思います。
今回は、そんな場合の変換方法についてです。
対象者
- ETLツール「Waha! Transformer」でシステム開発を行う方
- まだ開発経験が浅い方
使用製品バージョン
- Waha! Transformer V5.3
前提
- Waha! Transformerのヘルプに従い、記事では下記を意味します。
・yyyyは西暦(数値4桁)
・mmは月(数値2桁)
・ddは日(数値2桁)
・HHは時(数値2桁)
・MMは分(数値2桁)
・SSは秒(数値2桁)
したいこと
- 「yyyymmddHHMMSS」の日付時刻型データを「yyyy/mm/dd」の形式に変換したい
- 「yyyy/mm/dd HH:MM:SS」の文字型データを「yyyy年mm月dd日」の形式(漢字形式)に変換したい
データ(入力ビューファイルの内容)
| 日付時刻型(yyyymmddHHMMSS) | 文字型(yyyy/mm/dd HH:MM:SS) |
|---|---|
| 20240101000000 | 2024/01/01 00:00:00 |
| 20251231235959 | 2025/12/31 23:59:59 |
| 20260317010101 | 2026/03/17 01:01:01 |
実装
入力ビュー
出力ビュー
したいこと1. の実装
したいこと1. についてはベタな方法で実装してみます。
- Date2String関数を使って、日付時刻型を文字型に変換する
第2パラメータで「1:日付」を指定しているのでyyyymmdd形式の文字列に変換される - Left関数を使って、yyyymmdd形式の文字列左から4文字まで(yyyy)を抽出する
- Date2String関数を使って、日付時刻型を文字型に変換する(1.と同じ)
- SubStr関数を使って、yyyymmdd形式の文字列5文字目から2文字(mm)を抽出する
- Date2String関数を使って、日付時刻型を文字型に変換する(1.と同じ)
- SubStr関数を使って、yyyymmdd形式の文字列7文字目から2文字(dd)を抽出する
- Concat関数を使って、2、4、6で抽出した文字列と"/"の文字列を結合する
結構面倒ですね・・
したいこと2. の実装
- FormatRead関数を使って、日付を表す文字型(yyyy/mm/dd HH:MM:SS形式)を数値型に変換する
- FormatWrite関数を使って、数値型の日付をyyyy年mm月dd日形式に変換する
したいこと1.の実装よりすっきりしてますねー!
実行後の出力ビューの内容
思った通りに出力されてますよね?
おわりに
今回は同じデータではなく、わざと型の違う2つの日付データを使い、2通りの異なる方法で実装しました。
データや形式によって、皆さんが実現しやすい方法で組み合わせてみてはいかがでしょうか?


