1. 获取当前日期
select TO_CHAR(sysdate,'yyyymmdd') day from dual;
2. 查询某日期N天内的日期集合
以日期2022.08.05日为例,查询10天内的日期(包括本日)
SELECT TO_CHAR((TO_DATE('20220805', 'yyyymmdd')) - level + 1, 'yyyymmdd') day
FROM DUAL connect BY LEVEL < 11;
输出结果:
如果要不包含本日,将+ 1去掉,sql如下:
SELECT TO_CHAR((TO_DATE('20220805', 'yyyymmdd')) - level, 'yyyymmdd') day
FROM DUAL connect BY LEVEL < 11;
3. 查询某日期N月后的日期
以日期2022.08.05日为例,查询2月后的日期
SELECT to_char(add_months(to_date( '20220805', 'yyyymmdd'), 2 ),'yyyymmdd') day FROM DUAL;
4. 查询某日期N月内对应日期集合
以日期2022.08.05日为例,查询10月内的对应日期集合
SELECT to_char(add_months(to_date( '20220805', 'yyyymmdd'), 1-level ),'yyyymmdd') day FROM DUAL connect BY LEVEL < 11;
输出结果为:
如果查询N月后,sql为:
SELECT to_char(add_months(to_date( '20220805', 'yyyymmdd'), level-1 ),'yyyymmdd') day FROM DUAL connect BY LEVEL < 11;
5. 查询月末日期相关
(1)查询某日期月末日期
2022.08.10的月末:
SELECT to_char(last_day(to_date( '20220810', 'yyyymmdd' )),'yyyymmdd') day FROM dual;
(2)查询某日期上N个月的月末日期
2022.08.10的上个月月末:
select to_char(last_day(add_months(to_date( '20220810', 'yyyymmdd' ),-1)), 'yyyymmdd') day from dual;
(3)查询某日期下N个月的月末日期
2022.08.10下个月月末:
select to_char(last_day(add_months(to_date( '20220810', 'yyyymmdd' ),+ 1)), 'yyyymmdd') day from dual;