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