文字列を日付型へ変換する方法について

簡単かと思ってましたがなかなか上手くいかず質問しました。

YYYYMM形式が文字列で入っている項目「計上年月」があります。→例:202410
「計上年月」に01を付け、さらに日付「YYYY-MM-DD」に変換したいです。→例:2024-10-01

そこで以下の計算フィールドを作成しましたが、結果が上手くいきません。
parseDate(concat({keijyo_ym},{01}),‘yyyy-MM-dd’)

concat({keijyo_ym},{01}) までだと上手く「20241001」となります。

どのようにすれば「yyyy-mm-dd」で表示されますでしょうか?

@mio

QuickSight Communityにご質問いただき、ありがとうございます!

concat関数で01を追加しなくても、parseDateだけで日付型への変換できないでしょうか?
日付型に変換できると、表示形式についてはUI上で設定できます。


image

1 Like

早速ご回答いただきありがとうございます。

教えていただいた通りに以下の通り設定してみると、ちゃんと日付になりました!
「01」を付けなくてもいいんですね。
parseDate({keijyo_ym})

しかし、202410、202411、202412の3つが正しく取得されなかったみたいです。。
解決策はありますでしょうか?
image

@mio

10月以降になると、正常にYYYYMM形式が認識できないようですね。
となると、やはりconcatなどを使って、認識できるようにしないといけないです。
01を追加するだけではなく、YYYY/MM/DD形式で文字列を作成し、それをparseDate()したほうがよさそうです。

例:concat(left({keijyo_ym},4),'/',right({keijyo_ym},2),'/','01')

例:parseDate({上記の計算フィールド})

うまくいくかどうか、お知らせください。

パートナー様の記事ですが、こちらご参考にしていただけると幸いです。
parseDateは特定のフォーマットの文字列のみ受け付けるため、文字列操作を行い、パースできる形式に変換する必要があります。

parseDate(concat(substring(
              toString(yearMonth), 1, 4),
              '-', substring(toString(yearMonth), 5, 2),
              '-', '01'),
          'yyyy-MM-dd')

ご回答ありがとうございます。
結果、無事にできました!
自分でもleftやrightを使ってやってみたのですが上手くいかず手こずっていたので大変助かりました。
ありがとうございました。
image

1 Like

ご教示いただきありがとうございます。
一度文字列で「yyyymmdd」を作成したものを「yearMonth」に当てはめたら出来ました!
URLを貼っていただいたサイトも、今後の参考にさせていただきます。
image