如何在Hive SQL中选择当前日期

80
如何在Hive中获取当前系统日期?在MySQL中,我们可以使用select now()命令,是否有人能够帮助我获取查询结果。我对Hive非常陌生,是否有适当的Hive文档可以提供关于伪列和内置函数的详细信息。
SELECT from_unixtime(unix_timestamp()); Hive有官方文档可以提供关于伪列和内置函数的详细信息。
6个回答

93
根据LanguageManual,您可以使用unix_timestamp()来获取“使用默认时区的当前时间戳”。如果您需要将其转换为更易读的格式,则可以使用from_unixtime(unix_timestamp())

3
谢谢Lukas,完美运作,应该被选为正确答案。 - Waleed Asender
1
你可以从https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF获取完整的信息。 - GihanDB
1
请注意,当前的文档条目(LanguageManual,2019-03-20)中对于unix_timestamp()的说明是“自2.0以来已被弃用,推荐使用CURRENT_TIMESTAMP常量。” - Rob Garrison

56

是的...我正在使用Hue 3.7.0 - Hadoop UI, 要获取当前日期/时间信息, 我们可以在Hive中使用以下命令:

SELECT from_unixtime(unix_timestamp()); --/Selecting Current Time stamp/

SELECT CURRENT_DATE; --/Selecting Current Date/

SELECT CURRENT_TIMESTAMP; --/Selecting Current Time stamp/

然而,在Impala中,您会发现只有以下命令可用于获取日期/时间详细信息:

SELECT from_unixtime(unix_timestamp()); --/Selecting Current Timestamp /
希望它解决了您的疑问 :)

23

current_datecurrent_timestamp 函数现在在 Hive 1.2.0 及更高版本中可用,这使代码更加简洁。


2
Cloudera发行版中的Hive 1.2版本不包含current_date函数,但包含unix_timestamp()函数。 - veve

21

获取仅包含当前日期而不包括时间戳:

在低版本中,似乎Hive CURRENT_DATE不可用,因此您可以使用(我在Hive 0.14上成功使用)

select TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()));

在较高版本(比如Hive 2.0)中,您可以使用:

select CURRENT_DATE;

只是提一下,current_date从Hive 1.2.0开始可用。https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions - user1314742

11
select from_unixtime(unix_timestamp(current_date, 'yyyyMMdd'),'yyyy-MM-dd');

current_date - 当前日期

yyyyMMdd - 我的系统当前日期格式;

yyyy-MM-dd - 如果您想将格式更改为其他格式。


这个查询对我有效:select from_unixtime(unix_timestamp(), 'yyyyMMddHHMMSS'); - TawabG

8
从当前日期中提取年份
SELECT YEAR(CURRENT_DATE())

IBM Netezza

extract(year from now())

HIVE

SELECT YEAR(CURRENT_DATE())

2
自2013年以来有什么变化吗?你现在使用的是哪个版本?如果有变化,请具体说明。 - ImAtWar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接