HIVE - date_format(your_date_column,'%Y-%m-%d%H')

时间:2016-05-31 22:57:14

标签: hive

我正在尝试在Hive中实现MySQL等效的date_format( your_date_column, '%Y-%m-%d %H' ) as my_date。我尝试了Hive date formatting中的一些选项,但无法正确使用格式。我还没有找到任何帮助过我的东西。

我可以请求可能已经遇到过这种情况或知道该怎么做的人吗?

4 个答案:

答案 0 :(得分:5)

最新版本的Hive有一个date_format() function,它只使用java格式代码而不是C.尝试date_format(your_date_column, 'yyyy-MM-dd HH')

答案 1 :(得分:1)

要将日期转换为给定的字符串格式,您必须使用hive的from_unixtime()功能

from_unixtime(bigint unixtime[, string format])将unix epoch(1970-01-01 00:00:00 UTC)的秒数转换为表示当前系统时区中该时刻的时间戳的字符串。

从下图中可以看到样本输入和输出: enter image description here

最终查询是

select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH') as my_date from table1;

其中table1是我的配置单元数据库中的表名。

我希望这有助于您实现date_format( your_date_column, '%Y-%m-%d %H' ) !!!

答案 2 :(得分:0)

我使用concat(substr(your_date_column,1,13), ':00')

解决了这个问题

如果date列有一个保留关键字,例如timestamp,就像我的情况一样,这可以工作 - concat(substr(`timestamp`,1,13),':00')

答案 3 :(得分:0)

假设您的表中有一列“ birth_day_H”为字符串格式, 您应该使用以下查询来使用birth_day_H

进行过滤
date_Format(birth_day_H, 'yyyy-MM-dd HH')

您可以通过以下方式在查询中使用它

select * from yourtable
where 
date_Format(birth_day_H, 'yyyy-MM-dd HH') = '2019-04-16 10';