Hive - 将'yyyy-MM-dd'之类的字符串转换为数据类型'yyyy-MM-dd

问题描述 投票:0回答:1

我在hive中有一个外部表,其中report_dt为列,数据类型为string,其值类似于2018-09-02 2018-09-03

我想从写在这个外部表上的查询创建托管表,report_dt_1作为列,数据类型为date

我已经通过一些线程,我能够查询

create table manag_newtable as select to_date(from_unixtime(unix_timestamp(report_dt,'yyyy-MM-dd'),'yyyy-MM-dd')) as report_dt_1 from exter_table;

所以上面的查询创建了一个新表,但是当我desc manag_newtable,仍然report_dt_1显示为string datatype

hadoop hive hiveql
1个回答
1
投票

在Hive 2.1.0之前,TO_DATE返回一个字符串。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

也许你想尝试一下CASThttps://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-date

否则,我建议将该列保留为纪元时间,因为1)使用您当前的格式会丢失时区信息,尽管您从未使用它,因此您假设UTC? 2)Hive需要较少的数字反序列化时间,使查询更快。如果必须格式化纪元,请在报告层而不是存储层执行此操作

© www.soinside.com 2019 - 2024. All rights reserved.