Hive常用日期函数有哪些
发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,这篇文章主要介绍了Hive常用日期函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.当前日期和时间select curren
千家信息网最后更新 2024年10月17日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安全错误
数据库的锁怎样保障安全
赣州优惠加油软件开发
arm服务器运行x86应用
佛山市得食安网络技术
服务器无法配置
空间数据库引擎技术
我的世界服务器刷雪傀儡
宝山区营销软件开发参考价格
单位电脑数据库攻击怎么查
数据库连接池支持LRU
公安网络安全训诫书模板
网络安全班会背景资料
php数据库登录地址
湖南信融网络技术有限公司
福建健康部门数据库
美电贝尔服务器硬盘指示灯红色
宿迁工业网络技术价格
2015年国际贸易数据库
查不到数据库是怎么回事
数据库软件工具官方免费版
订票系统数据库怎么创视图
32位电脑数据库吗
mysql数据库常问到
网络安全泄漏事故案例
软件开发常见比赛
暴走漫画互联网科技公司
单一功能的软件开发
古交软件开发哪家有实力
数据库应用技术模拟
三级计算机网络技术能不能评标
金华熙宝网络技术有限公司