hive日期函式 Demo(二)

2022-05-07 07:45:08 字數 2230 閱讀 8075

需求:某資產近乙個月的資產值

比如:今天是2023年2月28日,近乙個月若是按照自然月來算,那麼是2023年2月1日至2023年2月28日。最終需要的日期格式為:yyyymmdd。

當日時間戳

unix_timestamp() 方法可得到當前時間的時間戳。

上月今日

使用 add_months(日期,n) 函式可將日期往前、往後推n個月。主要有兩種格式:

add_months(『yyyy-mm-dd hh:mm:ss』,n),add_months(『yyyy-mm-dd』,n)。n為正往後推,n為負往前推。例如:

hive>

select add_months('

2018-02-28

', 3

);ok

2018-05

-31time taken:

0.127 seconds, fetched: 1

row(s)

hive

>

select add_months('

2018-02-28

', -3);

ok2017-11

-30time taken:

0.084 seconds, fetched: 1 row(s)

時間戳格式化

由於add_months()方法的入參「日期」不能直接使用時間戳,需做一下轉化。轉化函式為:from_unixtime(時間戳, 日期、時間)。表現形式主要有:from_unixtime(時間戳, 「yyyy-mm-dd hh:mm:ss」),from_unixtime(時間戳, 「yyyy-mm-dd 「)。如下:

hive>

select from_unixtime(1519818348, '

yyyy-mm-dd');

ok2018-02

-28time taken:

0.088 seconds, fetched: 1

row(s)

hive

>

select from_unixtime(1519818348, '

yyyy-mm-dd hh:mm:ss');

ok2018-02

-2807:45:48

time taken:

0.089 seconds, fetched: 1 row(s)

往後一日

根據需求,當前日期往前推乙個月後,還需往後推一日。往前、往後推n個日的函式為:date_add(日期,n)。主要有兩種轉換格式:date_add(『yyyy-mm-dd hh:mm:ss』,n),date_add(『yyyy-mm-dd』,n)。n為正往後推,n為負往前推。如下:

hive>

select date_add('

2018-02-28

', 3

);ok

2018-03

-03time taken:

0.089 seconds, fetched: 1

row(s)

hive

>

select date_add('

2018-02-28

', -3);

ok2018-02

-25time taken:

0.085 seconds, fetched: 1 row(s)

最終結果是:

from_unixtime(unix_timestamp(concat(date_add(add_months(from_unixtime(unix_timestamp(),'

yyyy-mm-dd hh:mm:ss

'),-

1),1),'

10:10:10

')), '

yyyymmdd

')

我感覺他的 concat 一步還是比較多餘,應該是沒有深入理解unix_timestamp函式=》去使用拼串去 符合預設引數格式 ,最好指定引數格式

推薦

from_unixtime(unix_timestamp(date_add(add_months(from_unixtime(unix_timestamp(),'

yyyy-mm-dd hh:mm:ss

'),-

1),1),'

yyyy-mm-dd

'), '

yyyymmdd

')

Hive日期函式

hive日期函式 函式用法 含參方式 用法備註 hive日期函式 函式用法 含參方式 用法備註 date2datekey date格式轉換成datekey date2datekey string date time date2datekey 2017 09 01 返回 20170901 date a...

Hive日期函式

1 unix timestamp 2018 12 05 08 45 17 作用 統計從1970年開始到現在的秒數 2 from unixtime 1525509615,yyyymmdd 作用 日期函式unix時間戳轉日期函式 3 to date 2018 12 08 10 08 01 作用 返回日期...

Hive日期函式

語法 from unixtime bigint unixtime string format 返回值 string 說明 轉化unix時間戳 從1970 01 01 00 00 00 utc到指定時間的秒數 到當前時區的時間格式 舉例 hive select from unixtime 132330...