Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Help to write an sql query

729894Nov 6 2009 — edited Nov 7 2009
Hi everyone!
I need some help in composing a query that would calculate the number of occurrences of '29-Feb' between 2 given dates (i.e. substitution variables).
What I figured so far is a way too complex and don't work all the time. Also I do know, that calculating a leap year is a bit different than just year mod 4 = 0.
I would appreciate very much if you help me to write this query or just give me a guess.

SELECT TO_NUMBER(TO_CHAR(date2, 'YYYY')-TO_CHAR(date1, 'YYYY'))/4
FROM
(SELECT CASE
WHEN MOD(TO_NUMBER(TO_CHAR(TO_DATE('&&date1', 'DD-Mon-RR'), 'RR')), 4) = 0
THEN TO_DATE('&date1', 'DD-Mon-RR')
ELSE(CASE
WHEN MOD(TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE('&date1', 'DD-Mon-RR'), 12), 'RR')), 4) = 0
THEN ADD_MONTHS(TO_DATE('&date1', 'DD-Mon-RR'), 12)
ELSE(CASE
WHEN MOD(TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE('&date1', 'DD-Mon-RR'), 24), 'RR')), 4) = 0
THEN ADD_MONTHS(TO_DATE('&date1', 'DD-Mon-RR'), 24)
ELSE(CASE
WHEN MOD(TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE('&date1', 'DD-Mon-RR'), 12), 'RR')), 4) = 0
THEN ADD_MONTHS(TO_DATE('&date1', 'DD-Mon-RR'), 36)
END)
END)
END)
END date1,

CASE
WHEN MOD(TO_NUMBER(TO_CHAR(TO_DATE('&&date2', 'DD-Mon-RR'), 'RR')), 4) = 0
THEN TO_DATE('&date2', 'DD-Mon-RR')
ELSE(CASE
WHEN MOD(TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE('&date2', 'DD-Mon-RR'), 12), 'RR')), 4) = 0
THEN ADD_MONTHS(TO_DATE('&date2', 'DD-Mon-RR'), 12)
ELSE(CASE
WHEN MOD(TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE('&date2', 'DD-Mon-RR'), 24), 'RR')), 4) = 0
THEN ADD_MONTHS(TO_DATE('&date2', 'DD-Mon-RR'), 24)
ELSE(CASE
WHEN MOD(TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE('&date2', 'DD-Mon-RR'), 12), 'RR')), 4) = 0
THEN ADD_MONTHS(TO_DATE('&date2', 'DD-Mon-RR'), 36)
END)
END)
END)
END date2
FROM DUAL);
UNDEFINE date1;
UNDEFINE date2;
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 5 2009
Added on Nov 6 2009
10 comments
816 views