HIve的日期函数(year/month/week)

current_date

Hive 中可识别的日期格式有两种:

yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
例如:2020-09-21

在Hive命令行中,我们可以通过current_date查看当前日期:

select current_date;

在这里插入图片描述

current_date拓展

只求当前年:

select year(current_date);

示例:
在这里插入图片描述
只求当前月:

select month(current_date);

在这里插入图片描述
求当前是一年的第几周:

select weekofyear(current_date);

在这里插入图片描述
求当月第几天(几号):

select day(current_date);

在这里插入图片描述

datediff和pmod

Hive中还提供了供我们计算时间间差值的函数:datediff。
格式:

datediff(‘date1’,‘date2’)

计算过程是date1-date2;
例如:

select datediff(current_date,'2020-09-01');

在这里插入图片描述
pmod用作两数之间取余,例如:

select pmod(8,4);

取余为0:
在这里插入图片描述
借助这一函数我们可以算出当前为周几。一周有7天,所以我们把7当初除数,天数为除数。在计算前,先已一个知道的日期为标准,例如:
2020-01-01号是星期三,那么我们就可以先算出当前日期与2020-01-01号的差值,然后减去所知周几再减1,除以7就可以得到当前日期:

select pmod(datediff(current_date,'2020-01-01')-4,7);

在这里插入图片描述

例题

为了帮助大家更好的理解,下面例举一些例题帮助大家巩固一下。

01 孙悟空 1990-01-01
02 猪八戒 1990-12-21
03 沙悟净 1990-05-20
04 唐三藏 1990-08-06
05 卡卡罗特 1991-12-01
06 贝吉塔 1992-03-01
07 琦玉 1989-09-26
08 杰诺斯 1990-01-20
09 鸣人 1990-10-10
10 佐助 1991-07-23
11 路飞 1995-05-05

1、查出每个人的年龄,如果当前月日小于出书年月日,则年龄减一

SELECT *,(CASE WHEN MONTH(CURRENT_DATE)<MONTH(birth) THEN YEAR(CURRENT_DATE)-1-YEAR(birth)
WHEN MONTH(CURRENT_DATE)>MONTH(birth) THEN YEAR(CURRENT_DATE)-YEAR(birth)
ELSE IF(DAY(CURRENT_DATE)>=DAY(birth),YEAR(CURRENT_DATE)-YEAR(birth),YEAR(CURRENT_DATE)-1-YEAR(birth))END)age FROM stu;

在这里插入图片描述
2、查询本月过生日的同学:

select * from stu where month(birth)=month(current_date);

在这里插入图片描述

3、查询下个月过生日的同学:

select * from stu where month(birth)=month(current_date)+1;

在这里插入图片描述
4、查询本周过生日的同学:

select * from stu where weekofyear(birth)=weekofyear(current_date);

在这里插入图片描述

本篇博文就到这里了,如果还有其他的计算方法或者本篇遗漏的知识欢迎大家到评论区进行补充。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值