Hive 時間日期處理總結

2022-02-14 10:50:43 字數 2918 閱讀 7368

最近用hive比較多,雖然效率低,但是由於都是t+1的業務模式。所以也就不要求太多了,夠用就行。其中用的吧比較多就是時間了,由於大資料中很多欄位都不是標準的時間型別字段,所以期間涉及了很多的時間日期欄位的處理,這裡做乙個彙總。一遍以後查詢使用。也方便大家學習。

1.先來乙個比較老的,select unix_timestamp() ;

結果如下:

2.通過提示可知該用法已經被放棄了建議採用current_timestamp來替代。查結果如下:

3.如果當前時間為int型別則需要轉義一下比如使用from_unixtime()

select

from_unixtime(unix_timestamp());

--2018-02-27 14:51:01

4.獲取當前日期current_date。**如下:

select

current_date;--

2018-02-27

1.對比日期函式,經常用於日期之間比較大小,或者計算差值,日期加減。

日期差值:datadiff(結束日期,開始日期),返回結束日期減去開始日期的天數。

日期加減:date_add(時間,增加天數),返回值為時間天+增加天的日期;date_sub(時間,減少天數),返回日期減少天後的日期。

執**況如圖所示:

注意如果想知道相差多少個小時又怎麼去求那?我們其實稍加改造即可。

hour函式可以獲得時間欄位的小時數和datediff來獲取兩個日期相差的天數。然後利用天數*24+hour的差值即為所求,

比如我們求2018-02-27 10:00:00 與 2018-02-25 12:00:00相差多少?

例項**如下:
select (hour('

2018-02-27 10:00:00

')-hour('

2018-02-25 12:00:00

')+(datediff('

2018-02-27 10:00:00

','2018-02-25 12:00:00

'))*

24) as

hour_subvalue

--46

補充乙個:返回當前時間下再增加num_months個月的日期add_months(string start_date, int num_months)

2.上面介紹了hour函式,那麼我們也會需要其他的時間提取,不多說直接看**,年月日時分秒:
select

year('

2018-02-27 10:00:00

'),month('

2018-02-27 10:00:00

'),day('

2018-02-27 10:00:00

'),hour('

2018-02-27 10:00:00

'),minute('

2018-02-27 10:00:00

'),second('

2018-02-27 10:00:00

'),weekofyear('

2018-02-27 10:00:00

');

--2018 2 27 10 0 0 9

補充:quarter,返回當前本年度第幾個季度。

3.日期轉換函式
to_date,語法: to_date(string timestamp),返回值為string型別的日期
示例如下:
select to_date('

2018-02-27 10:03:01

') ;

--2018-02-27

last_day(string date),返回這個月的最後一天的日期
select  last_day('

2018-02-27 10:03:01');

--2018-02-28

next_day返回當前時間的下乙個星期幾所對應的日期 。如下

select next_day('

2018-02-27 10:03:01

', 'tu'

);--

2018-03-06

說明,輸入日期為2-27,下個星期的周二為03-06,如果想要知道下周一的日期就是mo,週日就是su,以此類推。

我跟無數多小白說過,西方國家週日是每週的第一天,所以日曆和英語中都是現實週日再是周一,所以上面的下週日是3-4。注意嘍!
以上是我平時經常用的一些日期相關的處理和函式,比較方便,想不起來就過來掃一眼。畢竟hive用的比較少,相對於關係型資料庫的t-sql函式和方法還是比較low的,畢竟是個轉義工具。

目前主流還是hivesql,不過慢慢的都在想sparksql之類技術的轉移了。以後有新的日期函式我會繼續想本文中進行彙總,方便大家查詢。

Hive 時間日期處理總結

獲取當前時間截 select unix timestamp 結果 1539595903獲取當前時間1 select current timestamp 結果 2018 10 15 17 34 09.721獲取當前時間2 select from unixtime unix timestamp 結果 2...

常用時間日期處理總結

時間處理是專案中不可缺少的,下面整理了一些常用時間處理的用法,記錄一下。1.獲取當前時間 1 function getnowtime 2.時間與天數相加 1 function gettimeadddays time,days 3.獲取並格式化日期 年 月 日 1 function getformat...

SQL時間日期處理

1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 00 00.000 3.datediff...