csv文件中的日期格式为1989-09-26T09:00:00.000 + 05:30

时间:2018-08-22 04:50:37

标签: hive

当在Hive表中加载数据时,当我从Hive表中获取行时,所有日期列都为NULL。

我也只想获取日期,而不是时间戳,所以任何可能的解决方案。

2 个答案:

答案 0 :(得分:0)

我建议您在表定义中的确以日期时间为列的字符串表示,并解析并转换为日期,例如,

select cast(regexp_extract('1989-09-26T09:00:00.000+05:30', '(\\d{4}-\\d{2}-\\d{2})T.*', 1) as date);

您也可以使用Hive宏来方便使用,例如

create temporary macro parse_date(ts string)
  cast(regexp_extract(ts, '(\\d{4}-\\d{2}-\\d{2})T.*', 1) as date);

然后

select parse_date('1989-09-26T09:00:00.000+05:30');

答案 1 :(得分:0)

您可以使用Hive中的to_date函数仅从时间戳中提取日期

示例:

hive> select to_date('1989-09-26T09:00:00.000+05:30');
+-------------+--+
|     _c0     |
+-------------+--+
| 1989-09-26  |
+-------------+--+