意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Hive时间查询函数大全

来源:恒创科技 编辑:恒创科技编辑部
2023-12-21 07:18:59
经常用到hive的日期查询、日期转换以及日期计算的函数,特此记录,以便查阅!
获取当前时间

查询当前日期

select current_date 
> 2022-04-26

查询当前时间戳

select unix_timestamp()
> 1650977624
日期计算

日期加减天数
加几天:date_add(A,B)
减几天:date_sub(A,B)
参数说明:A参数可以是date,string,timestamp,格式必须是YYYY-MM-DD或者 YYYY-mm-dd hh:mm:ss,否则会返回null;B参数代表要加减的天数,正负数都可,date_add函数中正数代表加,负数代表减
样例:


Hive时间查询函数大全

select date_add('2020-09-01',1)
> 2020-09-02
select date_sub('2020-10-01 12:30:20',1)
> 2020-09-30 12:30:20

日期加减月份
add_months(A,B)
参数说明:第一个参数可以是date,string,timestamp,格式必须是YYYY-MM-DD,第二个参数代表要加减的月份数

select add_months('2022-05-20',-2)
> 2022-03-20

求两个日期之间的天数差
date_diff(A,B)
参数说明:A、B以是date,string,timestamp,格式必须是YYYY-MM-DD或者 YYYY-mm-dd hh:mm:ss,函数返回 A-B 的天数

select datediff('2022-02-20','2022-04-26')
> -65

求两个日期之间的月份差

select months_between('2018-02-01','2018-07-04')
> -5.095
select floor(months_between('2018-02-01','2018-07-04'))  
> -5

取年、月、日

select year('2022-04-26') 
> 2022
select month('2022-04-26') 
> 4
select day('2022-04-26') 
> 26
select hour('2022-04-26 12:20:00') 
> 12
select minute('2022-04-26 12:20:00') 
> 20

日期转unix_time
unix_timestamp(A,B)
A可以是varchar,string,可以是date或者timestamp,若格式是YYYY-MM-dd hh:mm:ss,则只需要一个参数,否则B参数需指定第一个日期的日期格式

select unix_timestamp('2021/09/01','YYYY/MM/DD')
> 1608998400
select unix_timestamp('2021-09-01 12:00:00')
> 1630468800

从unix_time时间戳转日期函数:
from_unixtime(A,B)
A是unixtimestamp,B是要转换成的日期格式,且第一个参数须是10位整数,返回的数据类型是string

select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')
> 2022-05-20 17:56:47

不同日期格式之间进行转换,可以通过unixtime函数转换,先转成unix timestamp,再转回其它格式的日期

select from_unixtime(unix_timestamp('2022/4/26','YYYY/mm/dd'),'YYYY-mm-dd') 
> 2022-04-26

字符串日期类型转换
将字符串转成date和timestamp,参数必须是 yyyy-mm-dd 或者 yyyy-MM-dd HH:mm:ss,否则结果都是null

select cast('2022-02-20' as timestamp)
> 2022-02-20 00:00:00.0
select cast('2022-02-20' as date)
> 2022-02-20
select cast('2022/02/20' as timestamp)
> null
上一篇: 我们有新名字啦! 下一篇: .Net程序连接HGDB新增时参数名称带$报错解决方法