获取指定月份月上个月、当前月、下个月的第一天和最后一天
add_months函数
add_months 函数主要是对日期函数进行操作,在数据查询的过程中进行日期的按月增加,其形式为:
add_months(date,int);其中第一个参数为日期,第二个为按月增加的幅度,例如:
add_months (sysdate,2):就是当前日期的两个月之后的时间。
如:表示2个月以后的时间:
SQL> select add_months(sysdate,2) from dual;
ADD_MONTHS(SYSDATE,+2)
2012-5-16 下午 02:30:47
表示2个月以前的时间,可以用下列语句
SQL> select add_months(sysdate,-2) from dual;
ADD_MONTHS(SYSDATE,-2)
2011-11-16 下午 02:32:39
如果第一个参数即当前日期的地方是某一个指定的具体日期,则该日期需要使用to_date('20190101','yyyymmdd')进行转换,
如下:
select * from tb_user where create_date_time>to_date('20220101','yyyymmdd')and create_date_time<tadd_months(to_date('20220101','yyyymmdd'),2)
以上语句表示查询日期在20220101到20220301之间的数据
获取上个月最后一天日期
select to_char((select last_day(add_months(to_date('20221221','YYYYMMDD'),-1)) from dual ),'yyyymmdd') lastdate from dual;
意思是获取2022-12-21号上一个的月末日期,得到结果为20221130。
获取当前月最后一天日期
把add_months的第二个参数 -1改为0 即可
select to_char((select last_day(add_months(to_date('20221221','YYYYMMDD'),0)) from dual ),'yyyymmdd') lastdate from dual;
获取下个月最后一天日期
把add_months的第二个参数 -1改为1 即
select to_char((select last_day(add_months(to_date('20221221','YYYYMMDD'),1)) from dual ),'yyyymmdd') lastdate from dual;
把减一改成1
获取当前月份月上个月、当前月、下个月的第一天和最后一天
获取当前月的上个月最后一天日期
与上面的类型把to_date(‘20221221’,‘YYYYMMDD’) 换成 sysdate即可
select to_char((select last_day(add_months(sysdate,-1)) from dual ),'yyyymmdd') lastdate from dual;
获取当前月最后一天日期
select to_char((select last_day(add_months(sysdate,0)) from dual ),'yyyymmdd') lastdate from dual;
获取当前月的下个月最后一天日期
select to_char((select last_day(add_months(sysdate,1)) from dual ),'yyyymmdd') lastdate from dual;