superi

主にキャリアと金融を嗜むメディア

SQLでyyyyMMdd hh:mm形式からdate型に変換する


スポンサーリンク

Treasure DataのPresto、Hiveを使っていたところ、datetime型からdate型に変換しようとcastしたところ、エラーになってしまいました。

原因

よくみると、datetime型のyyyyMMdd hh:mm:ss形式ではなく、yyyyMMdd hh:mmでデータが格納されており、これがcastでdate型に変換する際のエラーの原因と考えました。

convertとかformatするとかいろいろ試したのですが、全部ダメで、唯一実行できたのが以下です。

 cast(substr('2016-04-18 18:00', 1, 10) as date)

ええ、もはや文字列として扱う以外なく、yyyy-MM-ddの文字を取得し、date型にcastしたらなんとかなりました。