[HIve]日期相关函数

时间:2021-06-15 01:26:11

下面介绍一下常用的Hive日期处理相关函数。

1. to_date 日期时间转日期函数

(1)to_date语法to_date(string timestamp)

(2)返回值:   string

(3)说明: 返回日期时间字段中的日期部分。

(4)举例:

  
  
  1. hive> select to_date('2011-12-08 10:03:01') from dual;
  2. 2011-12-08

2. year 日期转年函数

(1)year语法:   year(string date)

(2)返回值: int

(3)说明: 返回日期中的年。

(4)举例:

  
  
  1. hive> select year('2011-12-08 10:03:01') from dual;
  2. 2011
  3. hive> select year('2012-12-08') from dual;
  4. 2012

3. month 日期转月函数 

(1)month语法: month   (string date) 

(2)返回值: int

(3)说明: 返回日期中的月份。

(4)举例:

  
  
  1. hive> select month('2011-12-08 10:03:01') from dual;
  2. 12
  3. hive> select month('2011-08-08') from dual;
  4. 8

4. day 日期转天函数

(1)day语法: day   (string date) 

(2)返回值: int

(3)说明: 返回日期中的天

(4)举例:

  
  
  1. hive> select day('2011-12-08 10:03:01') from dual;
  2. 8
  3. hive> select day('2011-12-24') from dual;
  4. 24

5. hour 日期转小时函数

(1)hour语法: hour   (string date) 

(2)返回值: int

(3)说明: 返回日期中的小时。

(4)举例:

  
  
  1. hive> select hour('2011-12-08 10:03:01') from dual;
  2. 10

6. minute 日期转分钟函数

(1)minute语法: minute   (string date) 

(2)返回值: int

(3)说明: 返回日期中的分钟。

(4)举例:

  
  
  1. hive> select minute('2011-12-08 10:03:01') from dual;
  2. 3

7. second 日期转秒函数

(1)second语法: second   (string date) 

(2)返回值: int

(3)说明: 返回日期中的秒。

(4)举例:

  
  
  1. hive> select second('2011-12-08 10:03:01') from dual;
  2. 1

8. weekofyear 日期转周函数

(1)weekofyear语法:   weekofyear (string date) 

(2)返回值: int

(3)说明: 返回日期在当前的周数。

(4)举例:

  
  
  1. hive> select weekofyear('2011-12-08 10:03:01') from dual;
  2. 49

9. datediff 日期比较函数

(1)datediff语法:   datediff(string enddate, string startdate) 

(2)返回值: int

(3)说明: 返回结束日期减去开始日期的天数。

(4)举例:

   
   
  1. hive> select datediff('2012-12-08','2012-05-09') from dual;
  2. 213
  3. hive> select datediff("2016-10-28 07:23:45", "2016-10-20 12:23:10") from dual;
  4. 8

10. date_add 日期增加函数 

(1)date_add语法:   date_add(string startdate, int days) 

(2)返回值: string

(3)说明: 返回开始日期startdate增加days天后的日期。

(4)举例:

  
  
  1. hive> select date_add('2012-12-08',10) from dual;
  2. 2012-12-18

11. date_sub 日期减少函数

(1)date_sub语法:   date_sub (string startdate, int days) 

(2)返回值: string

(3)说明: 返回开始日期startdate减少days天后的日期。

(4)举例:

  
  
  1. hive> select date_sub('2012-12-08',10) from dual;
  2. 2012-11-28

12. from_unixtime 日期函数UNIX时间戳转日期函数

(1)from_unixtime语法:from_unixtime(bigint unixtime[, string format]) 

(2)返回值: string

(3)说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式

(4)举例:

  
  
  1. hive> select from_unixtime(1323308943,'yyyyMMdd') from dual;
  2. 20111208

13 . unix_timestamp 获取当前UNIX时间戳函数

(1)unix_timestamp语法:   unix_timestamp() 

(2)返回值:   bigint

(3)说明: 获得当前时区的UNIX时间戳

(4)举例:

  
  
  1. hive> select unix_timestamp() from dual;
  2. 1323309615

14. unix_timestamp 日期转UNIX时间戳函数

(1)unix_timestamp语法:unix_timestamp(string date) 

(2)返回值:   bigint

(3)说明: 转换格式为“yyyy-MM-dd HH:mm:ss“的日期到UNIX时间戳。如果转化失败,则返回0。

(4)举例:

  
  
  1. hive> select unix_timestamp('2011-12-07 13:01:03') from dual;
  2. 1323234063

15. unix_timestamp 指定格式日期转UNIX时间戳函数

(1)unix_timestamp语法:   unix_timestamp(string date, string pattern) 

(2)返回值:   bigint

(3)说明: 转换pattern格式的日期到UNIX时间戳。如果转化失败,则返回0。

(4)举例:

  
  
  1. hive> select unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss') from dual;
  2. 1323234063

16. next_day 下周几的具体日期

(1)next_day语法:next_day(string date, string week) 

(2)返回值:string

(3)说明:返回大于指定日期并且与week相匹配的第一个日期。实质上是指下周几的具体日期。week可以是Mo, tue, FRIDAY等。

Returns the first date which is later than start_date and named as indicated.start_date is a string in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. day_of_week is day of the week (e.g. Mo, tue, FRIDAY).

(4)举例:

  
  
  1. hive> select next_day("2016-10-31", 'FRIDAY') from dual;
  2. 2016-11-04