hive中常用的日期处理函数

哈喽,大家好,最近工作中遇到很多日期处理问题,比较头疼,今天给大家整理一下hive的比较常用的日期处理函数,欢迎大家的点赞和转发。多谢大家。

date_format

释义:格式化日期

用法:date_format(date,格式)

例如:

将日期格式化为:2020-05-01和2020-05

hive > select date_format('2020-05-01 12:00:00','yyyy-MM-dd');
2020-05-01

hive > select date_format('2020-05-01 12:00:00','yyyy-MM');
2020-05

date_add 

释义:日期加法函数,数字为正,则加多少天,若数字为负数,则为减多少天;
用法:date_add(date,number);

例如:

将日期增加或减少4天;

hive> select date_add('2019-05-09',4);
2019-05-13

hive> select date_add('2019-05-09',-4);
2019-05-05

data_sub

释义:日期减法函数,数字为正,则减多少天,若数字为负数,则为加多少天
用法:date_sub(date,number)

例如:

将日期增加或减少4天

hive> select date_sub('2019-05-09',4);
2019-05-05

hive> select date_sub('2019-05-09',-4);
2019-05-13

next_day 

释义:取该日期的下一个周几的日期
用法:next_day(date,dayofweek)
星期一到星期日的英文(Monday,Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday)

例如:

取5.1后的下一个周五

hive> select next_day('2020-05-01',"Fri");
2020-05-08

last_day 

释义:取当月的最后一天日期
用法:last_day(date)

例如:

取5月的最后一天日期

hive> select last_day('2020-05-01');
2020-05-31
hive> select last_day('2020-04-01');
2020-04-30

datediff

释义:日期比较函数,第一个日期减去第二个时期数字,为正,则前者大于后者,为负,则前者小于后者;
用法:datediff(date1,date2)

例如:

比较5月1日和5月5日的大小

hive> select datediff('2020-05-01','2020-05-05');
-4

dayofmonth

释义:查询该日期在本月的第多少天
用法:dayofmonth(date)

例如:

5月6号在五月是第多少天

hive> select dayofmonth('2020-05-06');
6

current_date

释义:获取当前日期

hive> select current_date;
2020-05-14

current_timestamp

释义:获取当前时间

hive> select current_timestamp;
2020-05-14 10:26:57.613

add_months

释义:日期加一个月
用法:add_months(date,number)

例如:

2020-05-03加一个月

hive> select add_months('2020-05-03',1);
2020-06-03

year

释义:获取时间的年份

用法:year(date)

例如:

当前日期所在的年份

hive> select year('2020-05-14 12:00:00');
2020

month

释义:获取时间的月份

用法:month(date)

 例如:

当前日期所在的月份

hive> select month('2020-05-14 12:00:00');
5

day 

释义:获取时间的天
用法:day(date)

例如:

获取日期中的天

hive > select day('2020-05-14 12:00:00');
14

hour

释义:获取时间的小时
用法:hour(time) 若时间为空,则取出值为null

例如:

获取时间中的小时

hive> select hour('2020-05-14 12:00:00');
12

minute

释义:获取时间的分钟

用法:minute(time) 若时间为空,则取出值为null

​​​​​​例如:

获取时间中的分钟

hive> select minute('2020-05-14 12:04:50');
4

second

释义:获取时间的秒

用法:second(time) 若时间为空,则取出值为null

例如:

获取时间中的秒

hive> select second('2020-05-14 12:04:53');
53

weekofyear 

释义:日期所在年份的第多少周
用法:weekofyear(date)

例如:

当前日期是所在年份的第多少周

hive> select weekofyear(current_date);
20

 to_date

释义:转日期函数,默认转为yyyy-MM-dd格式
用法:to_date(time)

例如:

当前时间转为日期格式

hive> select to_date(current_timestamp);
2020-05-14

 

常用日期需求

① 取当月第1天

--先获取当前日期在该月份的第n天,然后当前日期减去第(n-1)天,则为结果
hive> select date_sub('2020-05-14',dayofmonth('2020-05-14')-1);
2020-05-01

② 取当月第6天

--先获取该日期在该月的第n天,然后当前日期减去第(n-1)天,再增加(m-1)天,则为结果
hive> select date_add(date_sub('2020-05-14',dayofmonth('2020-05-14')-1),5);
2020-05-06

③ 查询下一个月的第一天

--先获取最后一天,然后日期+1,则为下一月第一天
hive> select date_add(last_day('2020-05-14'),1);
2020-06-01

--先获取今天是当月第几天,算出当月第一天,然后加一个月,则为下月第一天
hive> select add_months(date_sub('2020-05-14',dayofmonth('2020-05-14')-1),1);
2020-06-01

④ 获取当前日期的所在月份

--日期格式化方式
hive>  select date_format('2020-05-14','MM');
05

--直接month获取方式
hive> select month('2020-05-14');
5

⑤ 获取本周一的日期

--先获取下周一的日期,然后减去7天,则为本周一日期
hive> select date_add(next_day(current_date,"MO"),-7);
2020-04-27

⑥ 给出一个日期计算该日期为周几

--先找一个周一的日期,比如我们找的2020-05-04,然后和当前日期(2020-05-14)做比较,就会得出相差的天数,
再用pmod获取正余数的函数来获取最后的余数(0-6分别代表周日~周六),本实例做+1操作,直接得出周几的结果;

hive> select pmod(datediff('2020-05-14','2020-05-04') + 1,7);
4

你可能感兴趣的:(hive,hive,hadoop,数据仓库)