获取 2 个日期之间的月份最后几天列表?
Get a list of month last days between 2 dates?
如标题所述,我正在尝试获取 2 个日期之间的月份最后几天的列表。
示例:
- 日期 1 ->
2014-08-15
- 日期 2 ->
2014-10-15
预期输出
2014-08-31
2014-09-30
我用来实现此目的的查询如下:
SELECT DISTINCT LAST_DAY(TO_DATE('2014-08-15') - 1 + ROWNUM)
FROM ALL_OBJECTS
WHERE TO_DATE('2014-08-15') - 1 + ROWNUM <= TO_DATE('2014-10-15');
不过我觉得可能有更优雅的方法来实现它。
如有任何意见,我们将不胜感激!
要获得与您相同的结果:
select add_months(LAST_DAY(date'2014-08-15'),level-1)
from dual
connect by add_months(trunc(date'2014-08-15','mm'),level-1)<= date'2014-10-15';
但我认为 2014-10-31 不满足您的条件 - “在 2 个日期之间”。
所以可能应该是这样的
select add_months(LAST_DAY(date'2014-08-15'),level-1)
from dual
connect by add_months(LAST_DAY(date'2014-08-15'),level-1)<=date'2014-10-15';
或
select add_months(LAST_DAY(date'2014-08-15'),level-1)
from dual
connect by level<=months_between(date'2014-10-15',date'2014-08-15');
最终查询:
select add_months(LAST_DAY(date'2014-11-07'),level-1)
from dual where add_months(LAST_DAY(date'2014-11-07'),level-1)<=date'2014-12-07'
connect by add_months(LAST_DAY(date'2014-11-07'),level-1)<=date'2014-12-07';
如标题所述,我正在尝试获取 2 个日期之间的月份最后几天的列表。
示例:
- 日期 1 ->
2014-08-15
- 日期 2 ->
2014-10-15
预期输出
2014-08-31
2014-09-30
我用来实现此目的的查询如下:
SELECT DISTINCT LAST_DAY(TO_DATE('2014-08-15') - 1 + ROWNUM)
FROM ALL_OBJECTS
WHERE TO_DATE('2014-08-15') - 1 + ROWNUM <= TO_DATE('2014-10-15');
不过我觉得可能有更优雅的方法来实现它。
如有任何意见,我们将不胜感激!
要获得与您相同的结果:
select add_months(LAST_DAY(date'2014-08-15'),level-1)
from dual
connect by add_months(trunc(date'2014-08-15','mm'),level-1)<= date'2014-10-15';
但我认为 2014-10-31 不满足您的条件 - “在 2 个日期之间”。
所以可能应该是这样的
select add_months(LAST_DAY(date'2014-08-15'),level-1)
from dual
connect by add_months(LAST_DAY(date'2014-08-15'),level-1)<=date'2014-10-15';
或
select add_months(LAST_DAY(date'2014-08-15'),level-1)
from dual
connect by level<=months_between(date'2014-10-15',date'2014-08-15');
最终查询:
select add_months(LAST_DAY(date'2014-11-07'),level-1)
from dual where add_months(LAST_DAY(date'2014-11-07'),level-1)<=date'2014-12-07'
connect by add_months(LAST_DAY(date'2014-11-07'),level-1)<=date'2014-12-07';