常常用到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函数中负数代表加,正数代表减
样例:select date_add('2020-09-01',1)> 2020-09-02select 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.095select floor(months_between('2018-02-01','2018-07-04')) > -5
取年、月、日
select year('2022-04-26') > 2022select month('2022-04-26') > 4select day('2022-04-26') > 26select hour('2022-04-26 12:20:00') > 12select 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')> 1608998400select unix_timestamp('2021-09-01 12:00:00')> 1630468800
从unix_time工夫戳转日期函数:
from_unixtime(A,B)
A是unixtimestamp,B是要转换成的日期格局,且第一个参数须是10位整数,返回的数据类型是stringselect 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,否则后果都是nullselect cast('2022-02-20' as timestamp)> 2022-02-20 00:00:00.0select cast('2022-02-20' as date)> 2022-02-20select cast('2022/02/20' as timestamp)> null