Hive 包含一个表“示例”,其中包含以下数据:
15-06-2015
15-06-2015
15-06-2015
15-06-2015
15-06-2015
15-06-2015
16-06-2015
使用以下查询,我将 String 类型的数据转换为 Hive Date 格式:
select TO_DATE(from_unixtime(UNIX_TIMESTAMP(date,'DD-MM-YYYY'))) from sample;
输出如下:
0 2014-12-28
1 2014-12-28
2 2014-12-28
3 2014-12-28
4 2014-12-28
5 2014-12-28
6 2014-12-28
输出与预期输出不同。
请建议如何获得预期的输出,例如:
2015-06-15
2015-06-15
2015-06-15
2015-06-15
2015-06-15
2015-06-15
2015-06-16
最佳答案
您的问题是 HiveQL 通常不区分大小写,但是 unix_timestamp
函数的第二个参数区分大小写。因此,您查询的正确语法是:
select TO_DATE(from_unixtime(UNIX_TIMESTAMP(date,'dd-MM-yyyy'))) from sample;
这样,您将获得预期的结果。
关于date - Hive UDF 字符串到日期的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32689672/