我想每年生成 trunc('7/1/2014','mm/dd/yyyy') 和 trunc(sysdate-1)+0.99999 (从 2014 年 7 月 1 日到昨天午夜)之间的日期范围。
预期结果请参考附图(https://i.stack.imgur.com/UD4Ub.png)
我想每年生成 trunc('7/1/2014','mm/dd/yyyy') 和 trunc(sysdate-1)+0.99999 (从 2014 年 7 月 1 日到昨天午夜)之间的日期范围。
预期结果请参考附图(https://i.stack.imgur.com/UD4Ub.png)
像这样的东西。根据需要进行调整。您可能不会select * from ranges
,但是您将在需要的任何地方/任何地方使用这些范围。dt
从我的解决方案中的表格中选择的输入 dateinput_date
可能是您的应用程序中的绑定变量等。希望您能够自己弄清楚调整;如果没有,请回信。
with
input_date ( dt ) as (
select to_date('07/01/2014', 'mm/dd/yyyy')
from dual
),
ranges ( date_from, date_to ) as (
select add_months(dt, 12 * (level - 1)) + level - 1,
least(trunc(sysdate), add_months(dt, 12 * level) + level - 1)
from input_date
connect by add_months(dt, 12 * (level - 1)) + level - 1 <= trunc(sysdate)
)
select * from ranges
;
DATE_FROM DATE_TO
---------- ----------
07/01/2014 07/01/2015
07/02/2015 07/02/2016
07/03/2016 11/28/2016