Hive常用日期函数有哪些
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍了Hive常用日期函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.当前日期和时间select curren
千家信息网最后更新 2025年01月31日Hive常用日期函数有哪些
这篇文章主要介绍了Hive常用日期函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
1.当前日期和时间
select current_timestamp
-- 2020-12-05 19:16:29.284
2.获取当前日期,当前是 2020-12-05
SELECT current_date;
## OR
SELECT current_date();
-- 2020-12-05
3.获取unix系统下的时间戳
SELECT UNIX_TIMESTAMP();
-- 1524884881
4.当前是 2020-12-05
select substr(current_timestamp, 0, 10);
-- current_timestamp
5.当前是 2020-12-05
select date_sub(current_date, 1);
--2020-12-04
6.yyyy-MM-dd HH:MM:ss 截取日期
select to_date("2017-10-22 10:10:10");
-- 2017-10-22
select date_format("2017-10-22" "yyyy-MM")
-- 2017-10
7.两个日期之间的天数差
select datediff("2017-10-22", "2017-10-12");
-- 10
select datediff("2017-10-22 10:10:10", "2017-10-12 23:10:10");
-- 10
select datediff("2017-10-22 01:10:10", "2017-10-12 23:10:10");
-- 10
8.时间截取
select from_unixtime(cast(substr("1504684212155", 0,10) as int)) dt;
-- 2017-09-06 15:50:12
9.时间戳转日期
语法: to_date(string timestamp)
select to_date(from_unixtime(UNIX_TIMESTAMP()));
-- 2018-04-28
select FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd 10:30:00');
- 2018-04-28 10:30:00
select concat(date_sub(current_date,1),' 20:30:00');
-- 2018-04-27 20:30:00
-- hive version 1.2.0
select date_format(date_sub(current_date,1),'yyyy-MM-dd 20:30:00');
10.日期增加
注意:原始日期格式只支持两种:yyyy-MM-dd yyyy-MM-dd HH:mm:ss
否则都需要date_format
来转
date_add
next_day
11. 附加题
有一个活跃会员表,每天分区维度是会员id,可以用device_id来代替,问怎么计算最近七天连续三天活跃会员数,其中表(dws.dws_member_start_day
)结构如下表(dt是分区,日期格式yyyy-MM-dd,每个分区有唯一device_id
):
device_id string
dt string
解法套路
1.首先思考可以用到的日期函数datediff, date_sub/date_add
2.连续日期,连续问题都会用到一个排名函数,但是排名函数的值是数值,要与日期的连续性做到映射,才方便分组,比如可以把日期映射到连续数字,或者数字映射到连续日期,实现这两个的操作就是通过前面的datedff 和 date_sub组合,原理就是日期与日期相减即可得到连续整数,整数随便与某个日期做相减即可得到连续的日期,其中date_sub可以是反向排序得到连续日期。
3.通过连续的排序日期或者排序id相减,然后分组即可解决此类问题
1.在原表基础上增加一列排序序号
SELECT device_id,
dt,
row_number() over(PARTITION BY device_id
ORDER BY dt) ro
FROM dws.dws_member_start_day
2.将序号转为连续日期,或者把日期转为连续数字,后成为gid
-- 2.1 序号转为连续日期
SELECT device_id,
dt,
datediff(dt, date_add('2020-07-20', row_number() over(PARTITION BY device_id
ORDER BY dt))) gid
FROM dws.dws_member_start_day
-- 2.2 日期转为连续序号
SELECT device_id,
dt,
(datediff(dt, '2020-07-21') - row_number() over(PARTITION BY device_id
ORDER BY dt)) gid
FROM dws.dws_member_start_day
3.分组筛选
SELECT device_id,count(1)
FROM
(SELECT device_id,
dt,
datediff(dt, date_add('2020-07-20', row_number() over(PARTITION BY device_id
ORDER BY dt))) gid
FROM dws.dws_member_start_day
WHERE datediff(dt, CURRENT_DATE) BETWEEN -7 AND 7 ) tmp
GROUP BY device_id,
gid
HAVING count(1) < 3
感谢你能够认真阅读完这篇文章,希望小编分享的"Hive常用日期函数有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
日期
函数
序号
时间
篇文章
排序
会员
数字
分组
常用
两个
就是
整数
格式
问题
支持
原始
之间
价值
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新天龙八部啥时候开新服务器
互联网科技视频讲解
电科网络安全性
软件开发收费合同模板
网络技术合伙人股权
机房网络安全系统
网络安全2020年主题
湖北服务器虚拟化安装服务器
平谷区信息化网络技术服务软件
电子信息工程学网络安全吗
数据库管理系统安全要求
哈工大打卡软件开发
java软件开发招聘郑州
quarz数据库脚本
it实训网络技术有限公司
新光海航人寿软件开发面试
网络安全知识宣传采访内容
wind数据库 教学视频
软件开发商如何筹划
lol重庆服务器
网络安全法 理解与实施
上海潮流软件开发厂家现货
10元每月的云服务器
怎么读取网页上传服务器的信息
网络安全防护的设计准则
白云软件开发专业技校中专
浪潮服务器设置管理口地址
增城网络安全哪家强
服务器内存管理器工具
英雄联盟数据库冥火之拥