hive中关于date的三个函数

hive中关于date的三个函数

传入数据数据

select * from pro;
+---------+-------------+-------------+
|   uid   |     首登      |     末登      |
+---------+-------------+-------------+
| guid01  | 2018-02-28  | 2018-03-02  |
| guid01  | 2018-03-01  | 2018-03-04  |
| guid02  | 2018-03-01  | 2018-03-03  |
+---------+-------------+-------------+

1. datediff两个日期之间相差的天数函数
传入参数(第一个天数字段,第二个天数字段)

select
uid,`首登`,`末登`,datediff(`首登`,`末登`)as `间隔天数`from pro;
from
+---------+-------------+-------------+-------+
|   uid   |     首登    |     末登   |间隔天数|
+---------+-------------+-------------+-------+
| guid01  | 2018-02-28  | 2018-03-02  | -2    |
| guid01  | 2018-03-01  | 2018-03-04  | -3    |
| guid02  | 2018-03-01  | 2018-03-03  | -2    |
+---------+-------------+-------------+-------+

2. date_add增加日期函数
传入参数(第一个天数字段,需要增加的天数字段)

select 
uid,`首登`,`末登`,date_add(`首登`,15)as `15天之后`from pro;
+---------+-------------+-------------+-------------+
|   uid   |    首登     |    末登     | 首登15天之后|
+---------+-------------+-------------+-------------+
| guid01  | 2018-02-28  | 2018-03-02  | 2018-03-15  |
| guid01  | 2018-03-01  | 2018-03-04  | 2018-03-16  |
| guid02  | 2018-03-01  | 2018-03-03  | 2018-03-16  |
+---------+-------------+-------------+-------------+

3. date_sub减少日期函数
传入参数(第一个天数字段,需要减少的天数字段)

select 
uid,`首登`,`末登`,date_sub(`首登`,15)as `15天之后`from pro;
+---------+-------------+-------------+-------------+
|   uid   |    首登     |     末登    | 首登15天之前|
+---------+-------------+-------------+-------------+
| guid01  | 2018-02-28  | 2018-03-02  | 2018-02-13  |
| guid01  | 2018-03-01  | 2018-03-04  | 2018-02-14  |
| guid02  | 2018-03-01  | 2018-03-03  | 2018-02-14  |
+---------+-------------+-------------+-------------+

拓展:在关于date的三个函数传参的过程中可以传入两个字段名,三是前提是报上字段中的数据类型必须为 tinyint / smallint / int 这三种数据类型其中的一种,比如字段内容为bigint时就会报错

DATE_ADD() only takes TINYINT/SMALLINT/INT types as second argument, got LONG
发布了48 篇原创文章 · 获赞 11 · 访问量 1543

猜你喜欢

转载自blog.csdn.net/weixin_45896475/article/details/104162836