Hive 常用日期時間函式彙總 及常用場景介紹

2021-10-04 11:40:33 字數 3330 閱讀 3543

hive 常用的日期及時間函式,以及常用的場景介紹。

宣告:

/導圖

1.1 返回時間的函式

返回當前時間:

current_date() :

current_timestamp() :

unix_timestamp([string timestamp [, string pattern]]) :

from_timestamp(bigint unixtime [, string format]) :

1.2 時間格式化函式

轉為日期形式:

to_date(string timestamp) : 字串轉日期

轉為自定義形式:

date_format(date|timestamp|string ts, string fmt)

抽取時間中的部分內容:

以下都必須傳入標準時間格式,返回的是 int 型:

year(string date): 返回年;

month: 返回月;

day: 返回天;

hour: 返回時;

minute: 返回分;

second: 返回秒。

1.3 時間計算函式

時間的加減:

date_add(date startdate, int days) :

add_months(date|string|timestamp start_date, int num_months) :

返回差值:

datediff(string enddate, string startdate) :

months_between(date|timestamp|string enddate, date|timestamp|string startdate):

1.4 時間轉換函式

月初、月末、年初:

trunc(string date, string format) format: month/mon/mm, year/yyyy/yy

last_day(string date) :

next_day(string start_date, string day_of_week)

更高維日期中的第幾次:

weekofyear(string date) :

dayofmonth(string date)

參考:

2.1 判斷某日期是週幾

pmod(datediff(

《需要判斷的日期或時間》

,'1970-01-04'),

7)-- 返回值:int 型別;

-- 返回值範圍:0~6

-- 如果是0,表示該日期是週日,若是1,則表示該日期為周一,其他以此類推

思路:以乙個歷史上是週日的時間為參照(這裡是』1970-01-04』,是週日),然後用 datediff 函式實現需要判斷的日期減去參照日期,最後用 pmod 函式取餘數,該差值除以 7 餘 多少,如果餘0,表示需要判斷的日期是週日,餘1,表示是周一,其他以此類推。

2.2 給指定時間增加或減少一段時間

-- 返回指定時間8小時後的時間

cast(from_unixtime(unix_timestamp(

《需要更改的時間》)+

28800

,'yyyy-mm-dd hh:mm:ss'

)as string)

思路:從時間戳角度切入,通過 unix_timestamp 函式將時間轉為時間戳,然後加上需要修改的時間,再用 from_unixtime 函式將時間戳轉為想要的時間格式(yyyy-mm-dd hh:mm:ss),最後轉為 string 格式。

因為時間戳的單位是秒,所以要增加8小時,就需要在原時間戳上邊加上 28800秒(8 * 60 * 60 )。

2.3 計算兩個時間段相差時長

(unix_timestamp(

)- unix_timestamp(

))/3600

思路:轉為時間戳處理,除以3600(60 * 60)。

2.4 時間格式轉換

-- 輸出標準日期格式(注:《需要轉化的日期或時間》本身需要是yyyy-mm-dd hh:mm:ss樣式的)

to_date(

《需要轉化的日期或時間》

)date_format(

《需要轉化的日期或時間》

,'yyyy-mm-dd'

)-- 2020-01-01 轉為 20200101 樣式

date_format(

《需要轉化的日期》

,'yyyymmdd'

)

2.5 next_day 的具體應用(如本周一的日期,上週一的日期等)
-- 除了周一,其他不適用,需要更新

-- 本周一

date_add(next_day(

current_date()

,'mo'),

-7)-- 上週一

date_add(next_day(

current_date()

,'mo'),

-14)-- 下周一

next_day(

current_date()

,'mo'

)-- 下下周一

date_add(next_day(

current_date()

,'mo'),

7)

2.6 trunc 的具體應用()
trunc(add_months(

current_timestamp()

,-1)

,'mm'

)-- 上月1號

hive日期時間函式

to date 日期時間轉日期函式 返回值 string 說明 返回日期時間欄位中的日期部分。select to date 2021 02 08 10 03 01 from dual 2021 02 08 current date 當前日期 select current date 2021 02 0...

hive的日期處理函式及常用需求

1.只有日期 hive default select current date ok c0 2019 12 19 time taken 0.059 seconds,fetched 1 row s 2.含時間 hive default select current timestamp ok c0 20...

hive時間日期函式及典型場景應用

1.1 取得當前日期 select current date 1.3 hive取得當前時間戳 select unix timestamp 1.4 時間戳轉日期 select from unixtime 1517725479,yyyy mm dd hh dd ss 1.5 日期轉unix時間戳 sel...