我有一个csv文件中的日期格式,格式为1989-09-26t09:00:00.000+05:30

5lwkijsr  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(468)

在配置单元表中加载数据时,当我从配置单元表中获取行时,所有日期列都将为null。
另外,我只想获取日期,而不是时间戳,所以任何可能的解决方案。

1aaf6o9v

1aaf6o9v1#

我建议您在表定义中使用datetime作为字符串表示列,并将其解析和转换为date,例如。,

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

为了方便起见,也可以使用配置单元宏,例如。,

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');
jk9hmnmh

jk9hmnmh2#

您可以使用hive中的tou date函数仅从时间戳中提取日期
例子:

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

相关问题