SELECT *
FROM event
WHERE EXISTS
(
SELECT 1
FROM dual
WHERE MOD(start_date - TO_DATE(1, 'J') + level - 1, 7) = 6
CONNECT BY
level <= end_date - start_date + 1
)
start_date end_date, , Monday, 1.
: , ANY Monday OR Friday 13th, :
SELECT *
FROM event
WHERE EXISTS (
SELECT 1
FROM dual
WHERE MOD(start_date - TO_DATE(1, 'J') + level - 1, 7) = 6
OR (MOD(start_date - TO_DATE(1, 'J') + level - 1, 7) = 3 AND TO_CHAR(start_date + level - 1, 'DD') = '13')
CONNECT BY
level <= end_date - start_date + 1
)
, TO_CHAR('D') MOD(start_date - TO_DATE(1, 'J') + level - 1, 7). , TO_CHAR('D') NLS_TERRITORY .
. , , Monday.
1 , 14%, , .
INDEX SCAN , ( FAST DUAL), , , , .
. :