如何计算蜂巢中的日期差异

How to calculate Date difference in Hive

我是新手。我有一个员工 table,其中有一列指定入职日期,我想检索过去 3 个月内入职的员工列表。我知道我们可以使用 from_unixtime(unix_timestamp()) 获取当前日期。如何计算 datediff?是否有像 MS SQL 中那样的内置 DATEDIFF() 函数?请指教!

是的 datediff 已实施;看: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

顺便说一下,我通过 Google 搜索 "hive datediff" 找到了这个,这是第一个结果 ;)

我先试试这个

select * from employee where month(current_date)-3 = month(joining_date)
datediff(to_date(String timestamp), to_date(String timestamp))

例如:

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

如果您需要以秒为单位的差异(即:您正在比较日期与时间戳,而不是整日),您可以简单地将两个日期或时间戳字符串转换为 'YYYY-MM-DD HH:MM:SS' 格式(或指定您的字符串日期格式)使用 unix_timestamp(),然后将它们彼此相减以获得以秒为单位的差异。 (然后可以除以 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_timestamp() 的用途,包括如何转换具有不同日期格式的字符串:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions