欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hive常用时间函数总结

程序员文章站 2024-01-22 19:56:34
...

                                         Hive常用时间函数总结

获取当前时间     >>>     select current_date;

0: jdbc:hive2://linux01:10000> select current_date;
+-------------+
|     _c0     |
+-------------+
| 2020-09-14  |
+-------------+

获取当前时间

0: jdbc:hive2://linux01:10000> select current_timestamp;
+-------------------------+
|           _c0           |
+-------------------------+
| 2020-09-14 17:16:19.88  |
+-------------------------+

 

获取当前时间戳   >>>    select UNIX_TIMESTAMP();

0: jdbc:hive2://linux01:10000> select UNIX_TIMESTAMP();
+-------------+
|     _c0     |
+-------------+
| 1600074118  |
+-------------+
  1. 获取当前的前1天或前两天   >>>   select date_sub(CURRENT_DATE,1);    
  2. 注:前2天 就将 1 改成2 即可
  3. 注 :后两天  就将 1 改成  -2 就行  可以根据正负进行加减天数    
0: jdbc:hive2://linux01:10000> 
0: jdbc:hive2://linux01:10000> select date_sub(CURRENT_DATE,1);
+-------------+
|     _c0     |
+-------------+
| 2020-09-13  |
+-------------+

 

 

获取当月月份  >>>    select substr(current_date , 1 ,7 );

0: jdbc:hive2://linux01:10000> select substr(current_date , 1 ,7 );
+----------+
|   _c0    |
+----------+
| 2020-09  |
+----------+

获取本月月初第一天   >>>     select date_sub(current_date,dayofmonth(current_date)-1);

0: jdbc:hive2://linux01:10000> 
0: jdbc:hive2://linux01:10000> select date_sub(current_date,dayofmonth(current_date)-1);
+-------------+
|     _c0     |
+-------------+
| 2020-09-01  |
+-------------+

获取本月月末     >>>    select last_day(current_date) ;

0: jdbc:hive2://linux01:10000> 
0: jdbc:hive2://linux01:10000> select last_day(current_date) ;
+-------------+
|     _c0     |
+-------------+
| 2020-09-30  |
+-------------+

查询下个月的第一天     >>>    select add_months(date_sub(current_date,dayofmonth(current_date)-1),1);

0: jdbc:hive2://linux01:10000> select add_months(date_sub(current_date,dayofmonth(current_date)-1),1);
+-------------+
|     _c0     |
+-------------+
| 2020-10-01  |
+-------------+

查询上个月 月份   >>>  select substr(add_months(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss'), -1 ) ,1, 7);  

注:如果想查询前6个月等 将 -1 改成 -6 即可,查询 后半年的  将-1 改成 6 即可 

0: jdbc:hive2://linux01:10000>  select substr(add_months(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss'), -1 ) ,1, 7);
+----------+
|   _c0    |
+----------+
| 2020-08  |
+----------+

获取上个月的今天    >>>     select add_months(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss'), -1 );

注 要是想获取前两个月 就将-1改成 -2 , 

0: jdbc:hive2://linux01:10000> select add_months(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss'), -1 );
+-------------+
|     _c0     |
+-------------+
| 2020-08-14  |
+-------------+

获取上个月的最后一天  >>>   select last_day(add_months(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss'), -1 ) )

注:想获取得上上个月的月末  可以将 -1 改成 -2 ,可根据你的需要时间进行修改

获取下下个月的 将  -1  改成 2  即可  可根据你的需要时间进行修改

0: jdbc:hive2://linux01:10000> select last_day(add_months(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss'), -1 ) ) ;
+-------------+
|     _c0     |
+-------------+
| 2020-08-31  |
+-------------+