【发布时间】:2020-08-25 04:00:23
【问题描述】:
换个说法,我在一列中有一个字符串,其月份为“3-6-9-12”。我必须通过比较字符串中的月份和提取(sysdate 中的月份)来获得下一个处理月份。 例如,五月的月份是 5 ,所以我希望字符串中的下个月是 6 。 七月份是 7 月份,所以我应该在下个月得到 9 月份。如果可能的话,我想在一个内联查询中做到这一点。 我正在尝试使用此查询来获取下个月 -
select instr(x,extract(month from sysdate))+1 from (select listagg(to_number(regexp_substr((extract(month from sysdate)||'-3-6-2-12'), '[^-]+', 1 ,level)),'-') 组内 (按 to_number(regexp_substr((extract(month from sysdate)||'-3-6-2-12'), '[^-]+', 1 ,level)))x 从 dual 排序 connect by regexp_substr((extract(month from sysdate)||'-3-6-2-12'), '[^-]+', 1 ,level) is not null order by to_number(x))
如果有其他更好的方法可以在 sql 中查找下个月,请提供帮助。
【问题讨论】:
-
完全不清楚.....(特别是这篇文章:“七月是7,所以我应该通过添加+2得到9作为下个月”)......
-
但是,既然你知道你的问题是什么,而且问题大约是第12个月,那么看看这个函数MOD
-
感谢您的及时回复,我会再写一遍-我有一个字符串,其值为“3-6-9-12”,即月份。现在无论我从 sysdate 得到什么月份,都应该与这个字符串进行比较,并将下个月给我。例如对于今天的日期,我将得到 5 作为月份(sysdate)所以现在我应该从字符串中得到 6 作为下个月。如果我当前的月份是 7 月(7),我应该从字符串中得到下个月的 9。希望这次很清楚
-
不,不清楚,因为七月之后就是八月......
-
为什么要将这些信息存储在字符串中?如果月份是 12 但字符串中没有 12 会发生什么?
标签: sql oracle sorting listagg