В настоящее время у меня есть процесс, который принимает переменную даты EG: '01 -MAR-2026 ', затем он перебирает эту дату, проверяя, является ли день средой. Если это так, то увеличьте счетчик, иначе добавьте 1 день и проверьте снова. Это происходит, когда число среды равно = 3.
IF (to_char(v_Date,'dy') = 'wed') THEN
v_NumWed := v_NumWed + 1;
END IF;
WHILE (v_NumWed != 3) LOOP
v_Date := v_Date + interval '1' day;
IF (to_char(v_Date, 'dy') = 'wed') THEN
v_NumWed := v_NumWed + 1;
END IF;
END LOOP;
Однако у меня есть ощущение, что есть более простой способ достичь этого, возможно, с помощью запроса или чего-то не используя al oop EG: использовать дату ввода и запрос, чтобы найти первую среду, а затем + 14 дней?
Любые предложения было бы здорово, заранее спасибо:)
РЕДАКТИРОВАТЬ: у меня есть что-то вроде этого, который, кажется, работает, также считает, если первый день - сама среда.
select next_day(trunc(v_date, 'MM') - 1, 'WED'), next_day(trunc(v_date, 'MM') - 1, 'WED') + 14 into v_first, v_third from dual;
решено: спасибо за помощь, получили несколько возможных решений в комментариях!