如何获得一个月的所有天数? [复制]
Posted
技术标签:
【中文标题】如何获得一个月的所有天数? [复制]【英文标题】:How to get all days in month? [duplicate] 【发布时间】:2014-10-08 18:06:44 【问题描述】:是否可以在 Oracle SQL/PLSQL 中将一个月中的所有日期作为表获取?
从 bla-bla-bla DUAL 中选择 *
结果:
1 rec: 01.01.2012
2 rec: 02.01.2012
3 rec: 03.01.2012
...
4 rec: 31.01.2012
?
【问题讨论】:
这可能有助于community.oracle.com/thread/340389?start=0&tstart=0 【参考方案1】:这就是你要找的东西;
select to_date('01.01.2012','dd.mm.yyyy')+level-1
from dual
connect by level <= TO_CHAR(LAST_DAY(to_date('01.01.2012','dd.mm.yyyy')),'DD')
【讨论】:
超过 30 天的月份或 2 月(除了闰年有 28 天)怎么办?LAST_DAY
总是返回给定月份的最后一天,考虑天数和闰年。【参考方案2】:
ADD_MONTHS (dt, 1) - dt
也是一种选择。
对于一年中的特定月份,您需要硬编码日期:
WITH d AS
(SELECT TRUNC ( to_date('01.01.2012','dd.mm.yyyy'), 'MM' ) - 1 AS dt
FROM dual
)
SELECT dt + LEVEL
FROM d
CONNECT BY LEVEL <= ADD_MONTHS (dt, 1) - dt
/
否则,要获取当前月份的列表,只需使用 SYSDATE 而不是硬编码日期:
SQL> WITH d AS
2 (SELECT TRUNC(sysdate,'MM') -1 AS dt FROM dual
3 )
4 SELECT dt + LEVEL
5 FROM d
6 CONNECT BY LEVEL <= ADD_MONTHS (dt, 1) - dt
7 /
DT+LEVEL
---------
01-OCT-14
02-OCT-14
03-OCT-14
04-OCT-14
05-OCT-14
06-OCT-14
07-OCT-14
08-OCT-14
09-OCT-14
10-OCT-14
11-OCT-14
12-OCT-14
13-OCT-14
14-OCT-14
15-OCT-14
16-OCT-14
17-OCT-14
18-OCT-14
19-OCT-14
20-OCT-14
21-OCT-14
22-OCT-14
23-OCT-14
24-OCT-14
25-OCT-14
26-OCT-14
27-OCT-14
28-OCT-14
29-OCT-14
30-OCT-14
31-OCT-14
31 rows selected.
SQL>
【讨论】:
这对我的情况很有用,谢谢。以上是关于如何获得一个月的所有天数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章