SQL | 常用的日期处理函数和日期处理需求

目录

一、日期处理函数

1、current_date

2、current_timestamp

3、date_format

4、to_date

5、date_add

6、date_sub

7、add_months

8、next_day

9、last_day

10、datediff

11、dayofmonth

12、weekofyear

13、year、month、day、hour、minute、second

二、日期处理需求

1、取当月第1天

2、取当月第8天

3、查询下一个月的第一天

4、获取本周一的日期


一、日期处理函数

1、current_date

含义:获取当前日期。

用法:current_date

例子:

select current_date;
>> 2022-09-13

2、current_timestamp

含义:获取当前时间。

用法:current_timestamp

例子:

select current_timestamp;
>> 2022-09-13 17:52:57.613

3、date_format

含义:将日期格式化。

用法:date_format(date,格式)

例子:

select date_format('2022-09-13 12:00:00','yyyy-MM-dd');
>> 2022-09-13

4、to_date

含义:转为日期格式,默认为yyyy-MM-dd格式。

用法:to_date(time)

例子:

select to_date(current_timestamp);
>> 2022-09-13

5、date_add

含义:日期加法函数,数字为正,则加多少天;为负,则减多少天。

用法:date_add(date,number)

例子:

select date_add('2022-09-13',3);
>> 2022-09-16
select date_add('2022-09-13',-3);
>> 2022-09-10

6、date_sub

含义:与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

7、add_months

含义:日期加一个月。

用法:add_months(date,number)

例子:

select add_months('2022-09-13',1);
>> 2022-10-13

8、next_day

含义:该日期的下一个周几所在的日期。(通俗理解:某日期的下周几是多少号)

用法:next_day(date,dayofweek)

例子:

select next_day('2022-09-13',"Fri");--下周五
>> 2022-09-23

9、last_day

含义:当月最后一天的日期。

用法:last_day(date)

例子:

select last_day('2022-09-13');
>> 2022-09-30

10、datediff

含义:计算两个日期之间的天数。正数表示前者大于后者,负数表示前者小于后者。

用法:datediff(date1,date2)

例子:

select datediff('2022-09-13','2022-09-10');
>> 3

11、dayofmonth

含义:日期所在月份的第多少天。

用法:dayofmonth(date)

例子:

select dayofmonth('2022-09-13');
>> 13

12、weekofyear

含义:日期所在年份的第多少周。

用法:weekofyear(date)

例子:

select weekofyear(current_date);
>> 38

13、year、month、day、hour、minute、second

SQL | 常用的日期处理函数和日期处理需求_第1张图片 


二、日期处理需求

1、取当月第1天

先获取当前日期在该月的第n天,然后当前日期减去第(n-1)天。

select date_sub('2022-09-13',dayofmonth('2022-09-13')-1);
>> 2022-09-01

2、取当月第8天

先获取当前日期在该月的第n天,然后当前日期减去第(n-1)天,再增加(m-1)天。

select date_add(date_sub('2022-09-13',dayofmonth('2022-09-13')-1),8-1);
>> 2022-09-08

3、查询下一个月的第一天

方式一:先获取最后一天,然后日期+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

4、获取本周一的日期

先获取下周一的日期,然后减去7天。

select date_add(next_day(current_date,"MO"),-7);
>> 2022-09-12

以上就是本次分享的全部内容,创作不易,你的关注、点赞、转发是我坚持的动力,开心的源泉,我会持续为大家输出作品的。

你可能感兴趣的:(SQL,sql,hive)