Hive的时间操作函数

目录

前言

hive 里面的时间函数有很多,今天单讲dayofweek函数,背景:有时候不仅要出日报,还要出周报,需要很多天归为同一周,求sum或者均值;

函数使用介绍

在Hive中,可以使用dayofweek()函数来计算某个日期是一周的第几天。该函数的语法如下:

sql 复制代码
dayofweek(date)

其中,date表示要计算的日期,可以是一个日期字符串或者一个日期类型的列名。

dayofweek()函数返回一个整数,表示日期所在周的第几天,返回值范围为1-7,其中1表示周日,2表示周一,以此类推。

例如,要计算当前日期是一周的第几天,可以使用以下HiveQL语句:

sql 复制代码
SELECT dayofweek(current_date());

该语句会返回当前日期所在周的第几天,例如,如果当前日期是周三,则返回值为4。

实际使用

判断该天是星期几

sql 复制代码
select 
case when dayofweek('${etl_date}') =1 then '星期日'
     when dayofweek('${etl_date}') =7 then '星期六'
     when dayofweek('${etl_date}') =6 then '星期五'
     when dayofweek('${etl_date}') =5 then '星期四'
     when dayofweek('${etl_date}') =4 then '星期三'
     when dayofweek('${etl_date}') =3 then '星期二'
     when dayofweek('${etl_date}') =2 then '星期一'
     else null 
     end as weekday

判断该天对应的周(包含一周开始和结束)

sql 复制代码
select 
case when dayofweek('${etl_date}') =1 then concat(date_add('${etl_date}',-6),'~','${etl_date}')
     when dayofweek('${etl_date}') =7 then concat(date_add('${etl_date}',-5),'~',date_add('${etl_date}',1))
     when dayofweek('${etl_date}') =6 then concat(date_add('${etl_date}',-4),'~',date_add('${etl_date}',2))
     when dayofweek('${etl_date}') =5 then concat(date_add('${etl_date}',-3),'~',date_add('${etl_date}',3))
     when dayofweek('${etl_date}') =4 then concat(date_add('${etl_date}',-2),'~',date_add('${etl_date}',4))
     when dayofweek('${etl_date}') =3 then concat(date_add('${etl_date}',-1),'~',date_add('${etl_date}',5))
     when dayofweek('${etl_date}') =2 then concat('${etl_date}','~',date_add('${etl_date}',6))
     else null 
     end as week_name
相关推荐
计艺回忆路1 小时前
Hive自定义函数(UDF)开发和应用流程
hive·自定义函数·udf
天翼云开发者社区21 小时前
数据治理的长效机制
大数据·数据仓库
王小王-1231 天前
基于Hadoop与LightFM的美妆推荐系统设计与实现
大数据·hive·hadoop·大数据美妆推荐系统·美妆商品用户行为·美妆电商
万能小锦鲤2 天前
《大数据技术原理与应用》实验报告七 熟悉 Spark 初级编程实践
hive·hadoop·ubuntu·flink·spark·vmware·实验报告
Leo.yuan2 天前
ETL还是ELT,大数据处理怎么选更靠谱?
大数据·数据库·数据仓库·信息可视化·etl
万能小锦鲤2 天前
《大数据技术原理与应用》实验报告五 熟悉 Hive 的基本操作
hive·hadoop·ubuntu·eclipse·vmware·实验报告·hiveql
張萠飛2 天前
flink sql如何对hive string类型的时间戳进行排序
hive·sql·flink
張萠飛2 天前
flink sql读hive catalog数据,将string类型的时间戳数据排序后写入kafka,如何保障写入kafka的数据是有序的
hive·sql·flink
isNotNullX3 天前
数据怎么分层?从ODS、DW、ADS三大层一一拆解!
大数据·开发语言·数据仓库·分布式·spark
随心............3 天前
hive的相关的优化
数据仓库·hive·hadoop