首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在oracle中限制日期范围

在oracle中限制日期范围
EN

Stack Overflow用户
提问于 2012-01-26 04:57:40
回答 1查看 387关注 0票数 2

我希望在Oracle 11中将行分成月带。

例如,假设我有模式:

代码语言:javascript
复制
CREATE TABLE MY_TABLE (
  A_FIELD VARCHAR2(45),
  START_DATE DATE,
  END_DATE DATE
);

包含如下条目:"foo", 1-1-2011, 1-1-2012

有没有一种方法可以查询表,这样我就可以得到如下的结果集:

代码语言:javascript
复制
"foo", Jan-11
"foo", Feb-11
"foo", Mar-11
"foo", Apr-11
"foo", May-11
.....
"foo", Jan-12

我已经尝试了各种方法,比如CONNECT BY LEVEL,MONTHS_BETWEEN等,但我似乎不能很好地理解它。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-26 05:39:43

尝尝这个。在这个解决方案中有几个假设。其中之一是end_date和start_date之间的间隔不超过200个月-您可以根据需要调整查询中的200个月。第二个假设是一个月中的某一天总是相同的。如果不是这样,您可以很容易地调整查询以完全忽略这一天。但它应该能让你达到99%的目标--如果你需要澄清,请告诉我。

代码语言:javascript
复制
select a.A_FIELD, to_char(add_months(a.START_DATE,r), 'Mon-yy') as display_month
from MY_TABLE a, (
    select rownum-1 r 
    from all_objects
    where rownum <= 200) b
where add_months(trunc(a.START_DATE,'mm'),r) <= trunc(a.END_DATE,'mm')
order by A_FIELD, b.r
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9010176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档