如何在hive中计算日期差

k3bvogb1  于 2021-06-02  发布在  Hadoop
关注(0)|答案(4)|浏览(655)

我是个新手。我有一个employee表,其中有一列指定了加入日期,我想检索过去3个月内加入的员工列表。我知道我们可以使用from\u unixtime(unix\u timestamp())获取当前日期。如何计算datediff?有没有像ms sql那样的内置datediff()函数?请指教!

vmpqdwk3

vmpqdwk31#

是datediff已实现;请参见:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf
顺便说一句,我在google搜索“hivedatediff”时发现了这个,这是第一个结果;)

wnrlj8wa

wnrlj8wa2#

我先试试这个

select * from employee where month(current_date)-3 = month(joining_date)
fnx2tebb

fnx2tebb3#

如果您需要以秒为单位的差异(即:您将日期与时间戳进行比较,而不是整天),您可以使用unix\u timestamp()将两个日期或时间戳字符串转换为格式为“yyyy-mm-dd hh:mm:ss”(或显式指定字符串日期格式),然后将它们相互减去以秒为单位的差异(然后可以除以60.0得到分钟,或者除以3600.0得到小时,等等)
例子:

UNIX_TIMESTAMP('2017-12-05 10:01:30') - UNIX_TIMESTAMP('2017-12-05 10:00:00') AS time_diff -- This will return 90 (seconds). Unix_timestamp converts string dates into BIGINTs.

有关如何使用unix\u timestamp()的更多信息,包括如何转换具有不同日期格式的字符串:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf#languagemanualudf-日期函数

bprjcwpo

bprjcwpo4#

datediff(to_date(String timestamp), to_date(String timestamp))

例如:

SELECT datediff(to_date('2019-08-03'), to_date('2019-08-01')) <= 2;

相关问题