我是个新手。我有一个employee表,其中有一列指定了加入日期,我想检索过去3个月内加入的员工列表。我知道我们可以使用from\u unixtime(unix\u timestamp())获取当前日期。如何计算datediff?有没有像ms sql那样的内置datediff()函数?请指教!
vmpqdwk31#
是datediff已实现;请参见:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf顺便说一句,我在google搜索“hivedatediff”时发现了这个,这是第一个结果;)
wnrlj8wa2#
我先试试这个
select * from employee where month(current_date)-3 = month(joining_date)
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-日期函数
bprjcwpo4#
datediff(to_date(String timestamp), to_date(String timestamp))
例如:
SELECT datediff(to_date('2019-08-03'), to_date('2019-08-01')) <= 2;
4条答案
按热度按时间vmpqdwk31#
是datediff已实现;请参见:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf
顺便说一句,我在google搜索“hivedatediff”时发现了这个,这是第一个结果;)
wnrlj8wa2#
我先试试这个
fnx2tebb3#
如果您需要以秒为单位的差异(即:您将日期与时间戳进行比较,而不是整天),您可以使用unix\u timestamp()将两个日期或时间戳字符串转换为格式为“yyyy-mm-dd hh:mm:ss”(或显式指定字符串日期格式),然后将它们相互减去以秒为单位的差异(然后可以除以60.0得到分钟,或者除以3600.0得到小时,等等)
例子:
有关如何使用unix\u timestamp()的更多信息,包括如何转换具有不同日期格式的字符串:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf#languagemanualudf-日期函数
bprjcwpo4#
例如: