hive中常用的日期函数
日常需求遇到很多跟日期相关的函数,取年初月初啊日期加减,最近几天之类的,汇总一下,做个记录
➡️取年初,用trunc
select trunc(“2024-01-05”,“YY”)
这里的YY也可以写YYYY,如果是月,就写MM
➡️取当前日期和时间
- CURRENT_DATE :返回当前日期。例如 SELECT CURRENT_DATE; 可能返回 2025-01-23 。
🔨一般在可能补数的脚本中,用yesterday分区不如用current_date,
- CURRENT_TIMESTAMP :返回当前日期和时间。如 SELECT CURRENT_TIMESTAMP; 可能返回 2025-01-23 12:34:56.789 。(这样的遇到的比较少哈哈)
➡️日期提取
- YEAR :提取日期中的年份。 SELECT YEAR('2025-05-15'); 返回 2025 。
- MONTH :提取月份。 SELECT MONTH('2025-05-15'); 返回 5 。
- DAY :提取日。 SELECT DAY('2025-05-15'); 返回 15 。
🔨日期提取一般用在数据报表需要按照多个维度展示的时候用,但是现在不少报表都可以建分组字段,一个日期可以自动转换成周/星期/月/季度/年的维度
➡️日期计算(用于hive引擎,非presto)
- DATE_ADD :日期加法。 SELECT DATE_ADD('2025-01-23', 5); 表示在 2025-01-23 基础上加上5天,返回 2025-01-28 。
- DATE_SUB :日期减法。 SELECT DATE_SUB('2025-01-23', 3); 返回 2025-01-20 。
🔨我发现很多日期相关的计算,都是带-的形式的日期,一般分区表里存的都是不带-的日期
➡️时间计算
- unix_timestamp:select unix_timestamp(a)-unix_timestamp(b)from table
表示计算b与a之间差距多少秒,一般用来做时长计算
➡️日期格式化
- DATE_FORMAT :按指定格式格式化日期。 SELECT DATE_FORMAT('2025-01-23', '%Y年%m月%d日'); 返回 2025年01月23日 。🔨(在我们公司现在的数据平台不需要加%,且M要大写)
➡️日期比较
hive引擎:
DATEDIFF :计算两个日期之间的天数差。 SELECT DATEDIFF('2025-02-23', '2025-01-23'); 返回 31 。前面的日期减后面的日期
presto引擎:
select date_diff('day',a,b)
其中,a和b是date格式的带-的日期
结果是计算b➖a的值
➡️周相关函数
- WEEKOFYEAR :返回日期在一年中的周数。 SELECT WEEKOFYEAR('2025-01-23'); 返回当前日期在2025年中的周数。
- DAYOFWEEK :返回日期是一周中的第几天,1表示星期日,2表示星期一,以此类推。 SELECT DAYOFWEEK('2025-01-23'); 返回 4 ,因为2025年1月23日是星期四。
🔨现在数仓部门也有专门的日期维表,写入了日期相关的很多字段,比如周啊季度啊上旬啊月啊之类的,还挺全面的,但是要看一下跨年是如何计算的,保持一致就好了
➡️时间戳转换
偶尔也会遇到时间戳转换年月日的情况,时间戳是timestamp格式,年月日时分秒这样的,可以用date_formate(时间戳字段,'YYYYMMdd'),表示把时间戳转换为年月日。
🔨因为平时时间格式多数不加-,所以可以直接转换成yyyymmdd,如果需要-的话可以写成YYYY-MM-dd
更多推荐
所有评论(0)