行业知识
hive常见时间函数
2026-11-10 12:42:09
来源:互联网转载
1.时间戳和日期相互转换函数
具体���行结果在后面备注标注出来。主要为时间戳转换为日期函数,和将日期转换为时间戳函数
()-- 1.时间戳转化为日期函数-- from_unixtime(bigint unixtime[, string format]) 其中第一个参数必须为bigint类型select from_unixtime(1661084482)-- 2022-08-21 20:21:22 select from_unixtime(1661084482, 'yyyy-MM-dd') -- 2022-08-21 select from_unixtime(1661084482, 'yyyyMMdd') -- 20220821select from_unixtime(1661084482,'yyyy-MM-dd HH:mm:ss')-- 2022-08-21 20:21:22 -- 2.将日期转换为时间戳select unix_timestamp('2022-08-21 20:21:22')-- 1661084482 select unix_timestamp('20220821','yyyyMMdd')-- 1661011200select unix_timestamp('2022-08-21', 'yyyy-MM-dd')-- 1661011200 2.获取当前天的相关函数
获取当天时间的三种方式,注意格式,其中current_timestamp返回的时间为UTC时间。
-- 返回当天三种方式,格式有一定的不同select current_date -- 2023-06-14select current_timestamp -- 返回时分秒 2023-06-14 07:56:14.28select from_unixtime(unix_timestamp()) -- 2023-06-14 15:56:14
3.日期格式化函数
日期格式化函数,需要什么格式,后面写什么格式的日期字符串描述,to_date仅有一种格式返回结果
()-- 需要什么格式,后面写什么格式的日期字符串描述select date_format('2022-08-21 20:21:22', 'yyyy-MM-dd')-- 2022-08-21 select date_format('2022-08-21 20:21:22', 'yyyyMMdd')-- 20220821select date_format('2022-08-21', 'yyyy-MM-dd HH:mm:ss') -- 2022-08-21 00:00:00-- 获取时间日期的日期部分select to_date('2022-08-21 20:21:22')-- 2022-08-21 4.获取年、月、日、天、小时、分钟、秒、周数、星期几、季节函数
hive提供了灵活获取年、月、日、天、小时、分钟、秒、周数、星期几、季节的函数,最后面还提供了一个通过数学函数转换获取季度的逻辑,可以看出其实部分函数如果版本不支持,我们可以通过其他方式曲线获取。当然,不提倡,可读性差
5.日期和月份的加减相关函数
获取日期和月份的加减操作,灵活处理日期和月份增加减少,日期月份之间互相求差值。
-- 日期增加日select date_add('2022-08-21',10) -- 增加日2022-08-31-- 日期减少日select date_sub('2022-08-21',10) -- 减少日 2022-08-11-- 月增加select add_months('2022-08-21',2) -- 增加月 2022-10-21-- 月减少select add_months('2022-08-21',-1) -- 减少月2022-07-21-- 两个日期相减函数select datediff('2022-08-23', '2022-08-21')-- 2-- 两个月份相减select months_between('2022-08-21', '2022-07-25')-- 0.871 6.获取一些指定特殊日期的函数
主要是获取指定日期的月初(月末)、年初(年末)日期和获取指定日期的下个星期几的日期
-- 获取指定日期的月初(月末)、年初(年末)日期select last_day('2023-06-13') -- 月末2023-06-30select trunc('2023-06-13', 'MM') -- 月初2023-06-01select trunc('2023-06-13', 'YY') -- 年初2023-01-01select date_sub(add_months(trunc('2023-06-13', 'YY'),12),1) -- 年末2023-12-31-- 获取指定日期的下个星期几的日期select next_day('2023-06-13', 'MO') -- 2023-06-19select next_day('2023-06-13', 'TU') -- 2023-06-20select next_day('2023-06-13', 'WE') -- 2023-06-14select next_day('2023-06-13', 'TH') -- 2023-06-15select next_day('2023-06-13', 'FR') -- 2023-06-16select next_day('2023-06-13', 'SA') -- 2023-06-17select next_day('2023-06-13', 'SU') -- 2023-06-18 7.时区转换函数操作
时区转换函数有很多需要注意的点,其也可以联合使用,简单说一下时区,UTC是世界标准时间。
东一区 GMT+1,东八区GMT+8以此类推,西一区GMT-1,西七区GMT-7以此类推。
时间戳没有时区属性,同一时刻时间戳一致。
-- 将utc时间转换为东八区时间。输入为utc时间字符串,结果为东八区时间字符串select from_utc_timestamp('2023-06-14 15:56:14','GMT+8')-- 2023-06-14 23:56:14-- 将utc时间戳转换为东八区时间,输入为utc时间戳,结果为东八区时间字符串,时间戳没有时区属性,同一时刻时间戳一致select from_utc_timestamp(cast(1686729374000 as bigint),'GMT+8')-- 2023-06-14 15:56:14-- 将指定时区时间转换成utc时间select to_utc_timestamp('2023-06-14 15:56:14','GMT+8')-- 2023-06-14 07:56:14-- 将指定时区时间的时间戳转换成utc时间(这种使用方式不常见,是错误的,只是在某些时刻进行数据转换用,不建议使用)select to_utc_timestamp(cast(1686729374000 as bigint),'GMT+8')-- 2023-06-13 23:56:14-- 正确的转换时间戳为utc时间的方式select to_utc_timestamp(cast(1686729374000 as bigint),'UTC') 详情:https://www.cnblogs.com/lubians/p/17480959.html
上一篇:怎么添加社区服务器地址?
下一篇:怎么查看服务器地图种子?