[小ネタ] Snowflakeで区切り文字のない年月日(YYYYMMDD)から日付型(YYYY-MM-DD)にする方法 #SnowflakeDB

備忘録
2021.03.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

SnowflakeでYYYYMMDDの形式で文字列で保存されている値をYYYY-MM-DDの形式で表示するのに苦労したので、メモとして残します。

Snowflake上で日付のデータ型に変換する関数として、TO_DATEDATEが用意されていますが、年月日の間に区切り文字が入っていないとシリアル値として認識されてしまいます。

予期せぬタイムトリップです。

そこで、TO_DATEに'YYYY-MM-DD'のフォーマットを渡せばいいのかと思い、試してみると、エラーが出てしまいます。

公式ドキュメントの例をよく見ると、2番目の引数のフォーマットは指定する値と一致しています。そこで、フォーマットの指定を'YYYYMMDD'としてみると、うまく行きました!

さらに文字列に戻す場合には、TO_CHAR(VALUE, 'YYYY-MM-DD')で囲います。

おまけ

元の値が数値の場合、その数値を文字列(TO_CHAR)にすればエラーを回避できます。

数値を文字列にしないと、エラーが出てしまいます。

おしまい