Skip to main content

Command Palette

Search for a command to run...

sql | easy to generate 'loop ranges'?

Updated
1 min readView as Markdown

need a column starting 1 to 100:

    SELECT  LEVEL SL_NO
      FROM  DUAL
CONNECT BY  LEVEL <= 100;

what about dates, from a date to a date?

    SELECT  TO_DATE(:from_date, 'DD-MON-RRRR') + LEVEL - 1 SL_NO
      FROM  DUAL
CONNECT BY  LEVEL <= (TO_DATE(:to_date, 'DD-MON-RRRR') - TO_DATE(:from_date, 'DD-MON-RRRR'));

example use of date loop:

DECLARE
    l_FROM_DATE DATE;
    l_TO_DATE   DATE;
BEGIN
    l_FROM_DATE := TO_DATE('01/11/2021', 'DD/MM/RRRR');
    l_TO_DATE   := TO_DATE('09/11/2021', 'DD/MM/RRRR');

    FOR x IN (      SELECT  (l_FROM_DATE + LEVEL - 1) V_DT
                      FROM  DUAL
                CONNECT BY  LEVEL <= (l_TO_DATE - l_FROM_DATE)
    )
    LOOP
        DBMS_OUTPUT.PUT_LINE(TO_CHAR(x.V_DT, 'DD-MON-RRRR'));
    END LOOP;
END;

/*
01-NOV-2021
02-NOV-2021
03-NOV-2021
04-NOV-2021
05-NOV-2021
06-NOV-2021
07-NOV-2021
08-NOV-2021
09-NOV-2021
*/
37 views

More from this blog

garbagedump

13 posts

issues I face at the workplace I love-hate & then forget about, just to face them again. solely for personal ref, please be cautious :) know a better solution? help me learn :D 0xweathered@gmail.com