持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
本文继续介绍hive的时间函数实战应用,上文介绍了如何判断一个日期或者时间是否是休息时间,在日常开发中开始比较实用的,下面介绍一下如何判断一个日期或者时间参数是否是周末,马上上代码来看看。
2、判断是否周末时间
跟上面的需求类似的还有判断是否为周末时间的,即某某订单的创建时间是在周末还是工作日的,使用到pmod()函数。
pomd()函数,相除取余数
使用说明:pomd(int a ,int b),或者是pomd(double a,double b),由此可见前后参数的格式一定要保持一致。
具体功能说明:该方法是获得a除以b的余数的绝对值。获得的结果为string类型。
,if(pmod(datediff('2022-06-11','1920-01-01')-3,7) in ('6','0'),1,0) as is_week_end -- 是否周六日
此处活动的时间规则是0-6,分别为周日、周一、周二、周三、周四、周五、周六。
同理可得,判断某日期是否为周一、周二、周三、周四、周五等等,对应的判断参数就是1、2、3、4、5,非常简单吧。
至于为什么要将日期先和1920-01-01获得差值,再减去3,再求余数,大家可以用一个具体的时间去一步一步算一下就看出端倪了,这里就给大家留个悬念啦。反正不用怀疑结果是否准确,绝对是靠谱滴。
但其实在hive2.2.0之后就开始支持一个直接获取指定日期是否为周末的函数了,那就是dayofweek(),直接入参指定的时间,就会给你返回出来这天是在一周中的第几天,当然,这要求你的hive版本是在2.2.0以上的啦,否则就只能使用上述原生函数的方法。 对于hive中的内置时间函数大致介绍到这里,下一篇文章还是会跟时间函数有关,只不过是更偏向时间应用层面包括时间的排序,时间筛选过滤,以及时间的增减等等。