1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

(Oracle) SQL Datumsliste

Dieses Thema im Forum "Relationale Datenbanksysteme" wurde erstellt von BaseBallBatBoy, 5. Mai 2012.

  1. BaseBallBatBoy

    BaseBallBatBoy Erfahrenes Mitglied

    Hi!

    DBMS: Oracle 10g

    Meine Tabelle:
    CREATE TABLE dates
    (
    name VARCHAR2 (30),
    date_from DATE,
    date_to DATE
    );

    Mein Eintrag:
    name date_from date_to
    ==== ======= ======
    EntryA 01-JUN-09 03-JUN-09

    Daraus will ich eine Datumsliste generieren, aber ich komme im Moment echt nicht drauf....
    Wie lautet das SQL damit ich folgendes erhalte?
    name my_date
    ==== =======
    EntryA 01-JUN-09
    EntryA 02-JUN-09
    EntryA 03-JUN-09

    Gruss
    BBBB
  2. Thomas Darimont

    Thomas Darimont Administrator

  3. BaseBallBatBoy

    BaseBallBatBoy Erfahrenes Mitglied

    Ich habe es mal versucht:

    SELECT
    NAME,
    DATE_FROM + rownum AS my_date
    FROM
    (
    SELECT
    NAME,
    DATE_FROM,
    DATE_TO
    FROM
    DATES
    )
    CONNECT BY DATE_FROM + rownum <= DATE_TO


    Ergibt:
    name my_date
    ==== =======
    EntryA 02-JUN-09
    EntryA 03-JUN-09


    Wenn ich die Tabelle um einen Record erweitere:

    name date_from date_to
    ==== ======= ======
    EntryA 01-JUN-09 03-JUN-09
    EntryB 05-JUN-09 07-JUN-09

    Erhalte ich:
    name my_date
    ==== =======
    EntryA 02-JUN-09
    EntryA 03-JUN-09
    EntryB 08-JUN-09

    Ist also noch nicht das wonach ich suche, aber danke schonmal für deinen Beitrag. Ich schau mir dann mal Connect By nochmal genauer an...
  4. BaseBallBatBoy

    BaseBallBatBoy Erfahrenes Mitglied

    Ich hab's inzwischen selbst herausgefunden. Falls es jemandem helfen sollte, hier meine Lösung:

    SELECT DISTINCT
    y.NAME,
    y.DATE_FROM + LEVEL - 1 AS MY_DATE,
    FROM (
    SELECT
    NAME,
    DATE_FROM,
    DATE_TO
    FROM
    DATES
    ) y
    CONNECT BY
    LEVEL <= y.DATE_TO - y.DATE_FROM + 1

Diese Seite empfehlen