Hive常用日期函数有哪些
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,这篇文章主要介绍了Hive常用日期函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.当前日期和时间select curren
千家信息网最后更新 2024年11月27日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安全错误
数据库的锁怎样保障安全
华为服务器与中科曙光服务器
知淘网络技术
安全展板 网络安全法
招商网络安全系统
网络安全可以分为哪几层
网络安全垃圾搜索
网络技术三级选择题考点
达梦数据库varchar最大值
东莞本凡网络技术有限公司官网
数据库查询 1=1
烟台众聚网络技术
希望之村服务器怎么租
数据库创意视频教程
查询数据库链接
辽宁子墨网络技术有限公司成就
医院网络安全具体职能
有关网络安全的案例图片
文广旅体局网络安全
华东师范大学公共数据库
金溪租房软件开发
两个服务器异地冗余
自觉维护网络安全管理制度
ns暗黑2如何选服务器
网络安全教育知识培训心得
数据库技术发展的现状
东莞本凡网络技术有限公司官网
一个软件开发公司需要多少钱
nfcapp软件开发
职业生涯信息数据库
惠普服务器深圳