hive SQL中日期的综合应用
持续更新…
锁定日期
函数 | 日期 |
---|---|
current_date | 今天的日期 |
-- 上周末,至往前12周
dt between date_sub(next_day(current_date,'MO'),91) and date_sub(next_day(current_date,'MO'),8)
-- 上周末,至往前8周
dt between date_sub(next_day(current_date,'MO'),63) and date_sub(next_day(current_date,'MO'),8)
-- 最近3个完整自然月
dt between trunc(add_months(current_date,-3),'MM') and add_months(last_day(current_date),-1)
-- 上月、MTD及历史同期
where (dt between trunc(add_months(current_date,-2),'MM') and date_sub(next_day(current_date,'MO'),8)
or dt between trunc(add_months(current_date,-13),'MM') and add_months(last_day(current_date),-12))
时间计算
unix_timestamp 日期转时间戳
from_unixtime 转回日期格式
--转换标准时间格式后进行计算
--7200为2小时换成秒
select
from_unixtime(unix_timestamp('2021-01-01 12:00:00')+7200,'yyyy-MM-dd HH:mm:ss')
--输出为:2021-01-01 14:00:00
-- 日期差值
datediff('2009-07-30', '2009-07-31')
-- 输出日期差值:-1 (前-后)
日期格式转换
unix_timestamp 日期转时间戳
from_unixtime 转回日期格式
select
from_unixtime(unix_timestamp('20220615','yyyyMMdd'),'yyyy-MM-dd')
--20220615输出为:2022-06-15
datekey2date('20220615')
--20220615输出为:2022-06-15
--另外、简单替换方法,反向转换
pt = regexp_replace('2022-06-15', '-', '')
date2datekey('2022-06-15')
--2022-06-15输出为:20220615