Oracle 中列出当前年所有日期和当前月所有日期

当前年所有日期sql语句:

SELECT TRUNC(SYSDATE, 'yyyy') + ROWNUM - 1 as ALL_YEAR_DATE_ FROM DUAL CONNECT BY ROWNUM <= 365;

当前月所有日期sql语句:

写法①:select level,to_char(trunc(to_date('2015-12','yyyy-mm'))+level-1,'yyyy-mm-dd') as dat from dual
connect by level <=last_day(to_date('2015-12','yyyy-mm'))-trunc(to_date('2015-12','yyyy-mm'))+1;

写法②:select TRUNC(sysdate, 'MM') + ROWNUM - 1 as ALL_MONTH_DATE_ from DUAL connect by ROWNUM <= TO_NUMBER(TO_CHAR(LAST_DAY(sysdate), 'dd'));

假如当前2月份,查询结果:

1    2019/2/1
2    2019/2/2
3    2019/2/3
4    2019/2/4
5    2019/2/5
6    2019/2/6
7    2019/2/7
8    2019/2/8
9    2019/2/9
10    2019/2/10
11    2019/2/11
12    2019/2/12
13    2019/2/13
14    2019/2/14
15    2019/2/15
16    2019/2/16
17    2019/2/17
18    2019/2/18
19    2019/2/19
20    2019/2/20
21    2019/2/21
22    2019/2/22
23    2019/2/23
24    2019/2/24
25    2019/2/25
26    2019/2/26
27    2019/2/27
28    2019/2/28

查询近1个月所有日期sql语句:

select TRUNC(ADD_MONTHS(sysdate, -1)) + ROWNUM - 1 as DAYLIST from DUAL connect by ROWNUM <= TRUNC(sysdate) - TRUNC(ADD_MONTHS(sysdate, -1));

假如当前日期2019/1/19,查询结果:

1    2019/1/19
2    2019/1/20
3    2019/1/21
4    2019/1/22
5    2019/1/23
6    2019/1/24
7    2019/1/25
8    2019/1/26
9    2019/1/27
10    2019/1/28
11    2019/1/29
12    2019/1/30
13    2019/1/31
14    2019/2/1
15    2019/2/2
16    2019/2/3
17    2019/2/4
18    2019/2/5
19    2019/2/6
20    2019/2/7
21    2019/2/8
22    2019/2/9
23    2019/2/10
24    2019/2/11
25    2019/2/12
26    2019/2/13
27    2019/2/14
28    2019/2/15
29    2019/2/16
30    2019/2/17
31    2019/2/18

查询近1年所有月份sql语句:

select TO_CHAR(ADD_MONTHS(sysdate, ROWNUM), 'yyyy-mm') from DUAL connect by ROWNUM <= 12;

假如当前2月份,查询结果:

1    2019-03
2    2019-04
3    2019-05
4    2019-06
5    2019-07
6    2019-08
7    2019-09
8    2019-10
9    2019-11
10    2019-12
11    2020-01
12    2020-02

猜你喜欢

转载自www.cnblogs.com/mwd-banbo/p/10401286.html