如何计算Hive中的日期差异

时间:2015-05-29 05:21:31

标签: hadoop hive hiveql

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

4 个答案:

答案 0 :(得分:39)

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

答案 1 :(得分: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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我会先尝试这个

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