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したらなんとかなりました。