歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Hive計算日期差

Hive計算日期差

日期:2017/2/27 15:56:01   编辑:Linux教程

本文主要講述怎樣用hive計算日期差問題。

首先,hive本身有一個UDF,名字是datediff。我們來看一下這個日期差計算的官方描述,(下面這個是怎麼出來的):

hive> desc function extended datediff;
OK
datediff(date1, date2) - Returns the number of days between date1 and date2
date1 and date2 are strings in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. The time parts are ignored.If date1 is earlier than date2, the result is negative.
Example:
   > SELECT datediff('2009-30-07', '2009-31-07') FROM src LIMIT 1;

從上面的描述可以看出datediff用法很簡單,就是datediff('日期1','日期2'),其中日期是有格式的,目前支持以下兩種格式:

yyyy-MM-dd HH:mm:ss
yyyy-MM-dd

但是,看上面的顯示 hive function裡對datediff的example有問題,2009-30-07應該為2009-07-30,實際上這個udf 還支持2009-7-30這種格式。這裡我的一個列子:

SELECT datediff('2013-10-15', '2013-9-15') FROM words LIMIT 1;

如果我的日期是2013/10/15這樣的,該這麼辦?這時候可以用hive的regexp_replace 這個UDF。示例如下:

SELECT datediff(regexp_replace('2013/10/15', "/", "-"),regexp_replace('2013/9/15', "/", "-")) FROM words LIMIT 1;   

hive的UDF還是很強大的,可以多show functions,學習了解各種hive function。希望這篇文章對你有用

Copyright © Linux教程網 All Rights Reserved