date - Hive UDF 字符串到日期的转换

标签 date hadoop casting hive

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/

相关文章:

java - 将带有时区的日期字符串转换为仅工作日和日期

java - Hadoop MapReduce读写序列文件

apache-spark - 我应该使用哪个版本的 hadoop-aws

java - 错误 : no classes specified

date - 使用管道将日期格式化为 dd/MM/yyyy

javascript - 如何检查以数字结尾的字符串不是日期?

Javascript 时间戳,如果 10 分钟过去了。

list - 是否可以在 F# 中实现类似于 System.Linq.Enumerable.Cast 的 List.cast 函数?

Java 将 int[] 转换为 byte[] 而不进行转换

arrays - 将数组的元素转换为单独的字符串