Announcement

Collapse
No announcement yet.

Variables Datum

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variables Datum

    Heyho,

    folgendes: Ich würde gerne Daten ausgeben ab einem bestimmten Tag vor drei Jahren. Das wollte ich so ähnlich lösen wie:

    Code:
    WHERE Entrydate between '20.12.'(to_char(sysdate,'YY')-3) AND to_char(sysdate,'DD.MM.YY')
    Funktioniert natürlich in der Form nicht ganz. Was muss ich an dem Code ändern, damit es geht? =)

  • #2
    Code:
    WHERE Entrydate between to_date('20.12.2008','DD.MM.YYYY') AND sysdate
    Probier doch mal dies.

    kuemmelchen

    Comment


    • #3
      TO_DATE() um Dein erzeugtes Datum

      Code:
      WHERE Entrydate between TO_DATE('20.12.'(to_char(sysdate,'YY')-3)) AND sysdate
      so in etwa - die Parameter von TO_DATE musst Du evtl. noch nachschauen.

      Comment


      • #4
        Hier ein Beispiel mit Zufallsdaten, BETWEEN ist goldrichtig, 3 Jahre sind auch ca. 3*365 Tage:
        Code:
        WITH zuf_dat AS
         (SELECT TRUNC(SYSDATE - DBMS_RANDOM.VALUE(1,3*365)) datum, 
                 DBMS_RANDOM.STRING('u', 2) id
            FROM DUAL
         CONNECT BY LEVEL <= 100)
        SELECT datum, id
          FROM zuf_dat
         WHERE datum between sysdate-3*365 AND sysdate
         ORDER BY datum;
        
        datum          id
        --------------------
        22.01.2008	CN
        13.02.2008	YK
        14.02.2008	FB
        ...
        03.10.2009	FB
        ...
        28.12.2010	WB
        31.12.2010	TZ

        Comment


        • #5
          @kuemmelchen Danke, aber das Jahr hinten dran soll ja variabel sein.

          @fanderlf Danke, probier ich gleich mal.

          @jum Danke, aber mit dem sysdate-3*365 gehe ich ja genau drei Jahre zurück, will aber z.B. ab dem 20.12. je drei Jahre vor dem aktuellen.

          EDIT: Bei der Lösung von fanderfl meint der Oracle SQL Developer "Rechte Klammer fehlt" (was nicht stimmen kann, die Klammern gehen ja auf...) Der Ansatz ist aber sicher gut, ich probier mal dran rum.

          Comment


          • #6
            Code:
            select to_date('21.12.' || to_char(to_number(to_char(sysdate,'YYYY')) - 3)) from dual

            @jum:
            Was ist mit dem Schaltjahr (366 Tage)?

            kuemmelchen

            Comment


            • #7
              @kuemmelchen
              3 Jahre sind auch ca. 3*365 Tage:

              @Sonnfan
              Bei der Lösung ging es mit einerseits um die Verwendung von BETWEEN mit Daten und darum dem Forum ein Testbeispiel zur Verfügung zu stellen, damit eine möglcihe Lösung schnell gerprüft werden kann, da wir ja Deine Tabellen nicht haben...

              Comment


              • #8
                @ kuemmelchen Hehe, cool, damit scheint es zu funktionieren. Tausend Dank! =)

                Comment

                Working...
                X