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

Hive 我的日期格式为1989-09-26T09:00:00.000+;05:30在csv文件中,hive,Hive,在配置单元表中加载数据时,当我从配置单元表中获取行时,所有日期列中的值都为NULL 另外,我只想获取日期,而不是时间戳,以便找到任何可能的解决方案。我建议您在表定义中使用datetime作为字符串指示列,并解析和转换为日期,例如 select cast(regexp_extract('1989-09-26T09:00:00.000+05:30', '(\\d{4}-\\d{2}-\\d{2})T.*', 1) as date); 为了方便起见,您也可以使用配置单元宏,例如 create tem

在配置单元表中加载数据时,当我从配置单元表中获取行时,所有日期列中的值都为NULL


另外,我只想获取日期,而不是时间戳,以便找到任何可能的解决方案。

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

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);
然后


您可以使用配置单元中的to_date函数仅从时间戳中提取日期

示例:

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