連続する数字を日付にしたい
例えば、下記のような数字が入ったdというフィールドがあるとします。
20200120144300
これを日付にするにはどうすればよいでしょうか?
cast(d AS datetime)
上記のようにそのまま変換するとエラーがでます。
日付の表記規則に整えて日付に変換する
そこで、CONTATとSUBSTRを用いて日付の表記に整えてから、CASTで日付形式に変換します。
SELECT
CAST( CONCAT( SUBSTR(CAST(d AS string),1,4),'-',
SUBSTR(CAST(d AS string),5,2),'-',
SUBSTR(CAST(d AS string),7,2),' ',
SUBSTR(CAST(d AS string),9,2),':',
SUBSTR(CAST(d AS string),11,2),':',
SUBSTR(CAST(d AS string),13,2) ) AS datetime) AS time,
cast(d as datetime) as a
FROM
data
結果
上記のようなクエリを書くと、
20200120110900
↓
2020-01-20T11:09:00
のように日付形式に変換できます。