我在蜂巢中的表格有一个格式为“2016/06/01”的日期文件。但我发现它与“2016-06-01”的格式不符。例如,他们无法比较。它们都是 string 。所以我想知道如何使它们和谐并可以比较它们。或者另一方面,如何将 ‘2016/06/01’ 更改为 ‘2016-06-01’ 以便他们可以比较。
非常感谢。
原文由 yanachen 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我的解决方案(对于字符串到真实日期类型):
select to_date(replace('2000/01/01', '/', '-')) as dt ;
ps:to_date() 返回 Date 类型, 此功能需要 Hive 2.1+ ;在 2.1 之前,它返回字符串。
ps2:hive _todate() 函数或 _dateformat() 函数,甚至 cast() 函数, 都无法 识别 ‘yyyy/MM/dd’ 或 ‘yyyymmdd’ 格式,我觉得这很可悲,让我有点抓狂。
原文由 Archi_Lantern 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
763 阅读
要将日期字符串从一种格式转换为另一种格式,您必须使用 hive 的两个日期函数
unix_timestamp(string date, string pattern)
将给定模式的时间字符串转换为unix时间戳(以秒为单位),如果失败则返回0。from_unixtime(bigint unixtime[, string format])
将 unix 纪元 (1970-01-01 00:00:00 UTC) 的秒数转换为表示当前系统时区中那个时刻的时间戳的字符串。使用以上两个功能,您可以达到您想要的结果。
示例输入和输出可以从下图中看到:
最后的查询是
其中 table1 是我的 hive 数据库中存在的表名。
我希望这对你有帮助!!!