Hive使用pmod函数实现dayofweek函数功能

在Hive 2.2.0之前的版本中,由于原生未提供dayofweek函数,本文介绍了一种使用hive原生函数获取星期几的技巧。通过计算指定日期与1920-01-01之间的天数差,再取模7,可以得到该日期对应的星期几,数值范围为0-6,分别对应周日到周六。为了使结果更直观,还提供了一个IF语句调整输出,使周一至周六对应1-7。

dayofweek在hive2.2.0开始支持,低版本的hive原生未提供dayofweek函数(获取一个日期是星期几的方法),所以只有我们自己编写udf函数提供,udf就不说了,在这里给出了一个使用hive原生函数获取星期几的技巧。

pmod(datediff('${date}', '1920-01-01') - 3, 7)

'${date}'表示给的日期。

输出的结果为0-6的数,分别表示 日,一,二 ... 六。

2016-01-01 5
2016-01-02 6
2016-01-03 0

如果想让周一到周六对应数字1-7只需要将查询出来的数据进行判断就行了,如下:

IF(pmod(datediff('${date}', '1920-01-01') - 3, 7)='0', 7, pmod(datediff('${date}', '1920-01-01') - 3, 7))

2016-01-01 5
2016-01-02 6
2016-01-03 7

转载于:https://www.cnblogs.com/shujuxiong/p/10001197.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值