Hive之時間函式

2021-09-29 09:00:11 字數 4770 閱讀 4878

1、unix_timestamp()

返回當前時區的unix時間戳

返回型別:bigint

hive>

select unix_timestamp(

)from hive_sum limit1;

1465875016

2、from_unixtime(bigint unixtime[,string format])

時間戳轉日期函式

返回型別:string

hive>

select from_unixtime(unix_timestamp(

),』yyyymmdd』)

from hive_sum limit1;

20160614

3、unix_timestamp(string date)

返回指定日期格式的的時間戳

返回型別:bigint

注意:如果後面只有date引數,date的形式必須為』yyyy-mm-dd hh:mm:ss』的形式。

hive>

select unix_timestamp(『2016-06

-01』)

from hive_sum limit1;

null

hive>

select unix_timestamp(『2016-06

-0100:00:00』)

from hive_sum limit1;

1464710400

4、unix_timestamp(string date,string pattern)

返回指定日期格式的時間戳

返回型別:bigint

hive>

select unix_timestamp(『2016-06

-01』,』yyyymmdd』)

from hive_sum limit1;

1449331200

5、to_date(string date)

返回時間欄位中的日期部分

返回型別:string

hive>

select to_date(『2016-06

-0100:00:00』)

from hive_sum limit1;

2016-06

-01

6、year(string date)

返回時間欄位中的年

返回型別:int

hive>

select

year

(『2016-06

-0100:00:00』)

from hive_sum limit1;

2016

7、month(string date)

返回時間欄位中的月

返回型別:int

hive>

select

month

(『2016-06

-01』)

from hive_sum limit

1;

6

8、day(string date)

返回時間欄位中的天

返回型別:int

hive>

select

day(『2016-06

-01』)

from hive_sum limit1;

1

9、weekofyear(string date)

返回時間欄位是本年的第多少周

返回型別:int

hive>

select weekofyear(『2016-06

-01』)

from hive_sum limit1;

22

10、datediff(string enddate,string begindate)

返回enddate與begindate之間的時間差的天數

返回型別:int

hive>

select datediff(『2016-06

-01』,』2016-05

-01』)

from hive_sum limit1;

31

11、date_add(string date,int days)

返回date增加days天後的日期

返回型別:string

hive>

select date_add(『2016-06

-01』,15)

from hive_sum limit1;

2016-06

-16

12、date_sub(string date,int days)

返回date減少days天後的日期

返回型別:string

hive>

select date_sub(『2016-06

-01』,15)

from hive_sum limit1;

2016-05

-17

13、add_months(string date,int months)

返回date增加months月後的日期

返回型別:string

hive>

select add_months(『2016-06

-01』,1)

from hive_sum limit1;

2016-07

-01-`

`1-4、current_date

返回當前日期

返回型別:string``

`sql

select

cust_id

,sum(

case

when update_time between add_months(

current_date,-

3)andcurrent_date

then

1else

0end

)as num_cnt

from src group

by cust_id;

15.date_format(date,格式)

根據格式整理日期

返回型別:string

select date_format(

'2019-02-10'

,'yyyy-mm');

2019

-02

next_day()

select  next_day(

'2019-02-12'

,'mo'

);

select  date_add(next_day(

'2019-02-12'

,'mo'),

-7);

18 . last_day()

返回當月的最後一天

select last_day(

'2019-02-10'

);

19 . months_between(date1, date2)

返回兩個日期間的月數(

如果date1在日曆中比date2晚,那麼months_between()就返回乙個正數。

如果date1在日曆中比date2早,那麼months_between()就返回乙個負數。

如果date1和date2日期一樣,那麼months_between()就返回乙個0。

)返回型別: int

sql

>

select months_between(to_date(

'2014-3-21'

,'yyyy-mm-dd'

), to_date(

'2014-1-10'

,'yyyy-mm-dd'

)) months

2from dual;

months

----------

2.35483871

sql>

select months_between(to_date(

'2014-1-10'

,'yyyy-mm-dd'

), to_date(

'2014-3-21'

,'yyyy-mm-dd'

)) months

2from dual;

months

----------

-2.3548387

sql>

select months_between(to_date(

'2014-1-10'

,'yyyy-mm-dd'

), to_date(

'2014-1-10'

,'yyyy-mm-dd'

)) months

2from dual;

months

----------

0--2014.3.21和2014.1.10之間,相差2個月加11天,11天按月換算成小數(在oracle裡面,以31天為基數):

sql>

select11/

31from dual;11/

31----------

.35483871

Python之時間函式

import datetime,time defdatetime to long time start datetime datetime格式轉long 毫秒 param time start return return int time.mktime time start.timetuple 10...

通用函式之時間轉換

我們可以把經常用到的函式封裝起來,在抽象類中,然後繼承來使用。時間轉時間戳 param object str return timestamp function totime str,flag false else echo inttime exit return inttime int 時間戳轉時...

Hive 時間函式

to date 日期時間轉日期函式select to date 2015 04 02 13 34 12 輸出 2015 04 02from unixtime 轉化unix時間戳到當前時區的時間格式select from unixtime 1323308943,yyyymmdd 輸出 20111208...