这次分享Hive SQL常用的日期处理函数和日期处理需求,希望对大家有所帮助。
一、常用日期函数
含义:获取当前日期。
用法:current_date
例子:
select current_date;
>> 2022-09-13
含义:获取当前时间。
用法:current_timestamp
例子:
select current_timestamp;
>> 2022-09-13 17:52:57.613
含义:将日期格式化。
用法:date_format(date,格式)
例子:
select date_format('2022-09-13 12:00:00','yyyy-MM-dd');
>> 2022-09-13
含义:转为日期格式,默认为yyyy-MM-dd格式。
用法:to_date(time)
例子:
select to_date(current_timestamp);
>> 2022-09-13
含义:日期加法函数,数字为正,则加多少天;为负,则减多少天。
用法:date_add(date,number)
例子:
select date_add('2022-09-13',3);
>> 2022-09-16
select date_add('2022-09-13',-3);
>> 2022-09-10
含义:与date_add对应,日期减法函数,数字为正,则减多少天;为负,则加多少天。
用法:date_sub(date,number)
例子:
select date_sub('2022-09-13',3);
>> 2022-09-10
select date_sub('2022-09-13',-3);
>> 2022-09-16
含义:日期加一个月。
用法:add_months(date,number)
例子:
select add_months('2022-09-13',1);
>> 2022-10-13
含义:该日期的下一个周几所在的日期。(通俗理解:某日期的下周几是多少号)
用法:next_day(date,dayofweek)
例子:
select next_day('2022-09-13',"Fri");--下周五
>> 2022-09-23
含义:当月最后一天的日期。
用法:last_day(date)
例子:
select last_day('2022-09-13');
>> 2022-09-30
含义:计算两个日期之间的天数。正数表示前者大于后者,负数表示前者小于后者。
用法:datediff(date1,date2)
例子:
select datediff('2022-09-13','2022-09-10');
>> 3
含义:日期所在月份的第多少天。
用法:dayofmonth(date)
例子:
select dayofmonth('2022-09-13');
>> 13
含义:日期所在年份的第多少周。
用法:weekofyear(date)
例子:
select weekofyear(current_date);
>> 38
13、year、month、day、hour、minute、second
二、日期处理需求
先获取当前日期在该月的第n天,然后当前日期减去第(n-1)天。
select date_sub('2022-09-13',dayofmonth('2022-09-13')-1);
>> 2022-09-01
先获取当前日期在该月的第n天,然后当前日期减去第(n-1)天,再增加(m-1)天。
select date_add(date_sub('2022-09-13',dayofmonth('2022-09-13')-1),8-1);
>> 2022-09-08
方式一:先获取最后一天,然后日期+1。
select date_add(last_day('2022-09-13'),1);
>> 2022-10-01
方式二:先获取今天是当月第几天,算出当月第一天,然后加一个月。
select add_months(date_sub('2022-09-13',dayofmonth('2022-09-13')-1),1);
>> 2022-10-01
先获取下周一的日期,然后减去7天。
select date_add(next_day(current_date,"MO"),-7);
>> 2022-09-12
推荐阅读SQL 常用函数整理
SQL中常用的四个排序函数
SQL优化万能公式:5 大步骤 + 10 个案例
SQL 中为什么经常要加NOLOCK?Hive中的窗口函数SQL学习路线图,首次公开