Hoscha: arbeiten mit date unter oracle

Hallo,
die aktuelle zeit erhalte ich ja bekannterweise mit sysdate().
Nun habe ich eine Tabelle, in der es ein Datumsfeld mit Eintraegen gibt, die sich bis zu 2002 datieren.

Wie sieht eine WHERE-Bedingung aus, dass ich nur die Reihen aus einer Tabelle erhalte, die im gegebenen Datumsfeld nur 7 Tage hinter dem heutigen Datum liegen?

P.S.: das ganze spielt sich in einer oracle-datenbank ab.

Danke im voraus,
Hoscha

  1. Hi,

    die aktuelle zeit erhalte ich ja bekannterweise mit sysdate().

    sysdate, Klammern braucht's nicht.

    Wie sieht eine WHERE-Bedingung aus, dass ich nur die Reihen aus einer Tabelle erhalte, die im gegebenen Datumsfeld nur 7 Tage hinter dem heutigen Datum liegen?

    Oracle speichert intern ein Datum in nummerischer Form, wobei "1" einen Tag umfasst, "1/86400" also eine Sekunde. Dies sollte Dir als Info ausreichen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. wenn ich dich richtig verstehe, Cheatah, soll ich das das Datum als Sekunden ausgeben lassen und mein Datumsfeld damit vergleichen, ob hoechstens 7 mal 86400 Sekunden kleiner ist.
      Richtig?
      Gibt es dafuer keine vordefinierte Funktion?
      Und wie kann ich mir das aktuelle Datum in Sekunden ausgeben lassn?

      1. Hi,

        wenn ich dich richtig verstehe, Cheatah, soll ich das das Datum als Sekunden ausgeben lassen und mein Datumsfeld damit vergleichen, ob hoechstens 7 mal 86400 Sekunden kleiner ist.
        Richtig?

        nö. netghost hat das von mir gemeinte Vorgehen skizziert.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
    2. Oracle speichert intern ein Datum in nummerischer Form, wobei "1" einen Tag umfasst, "1/86400" also eine Sekunde. Dies sollte Dir als Info ausreichen.

      Genauso macht es MS SQL und alle Microsoft Datenbanksysteme doch auch und da gebe ich einfach Datum - 7 ein um von einem Datum 7 Tage abzuziehen. Mit Oracle kenn ich mich nicht aus, weiss also nicht ob dies auch so unter Oracle funktioniert.

      Grüsse
      Netghost

  2. Hallo,

    hier ein Auzug aus der Oracle-Doku:

    Date Arithmetic
    You can add and subtract number constants as well as other dates from dates.
    Oracle interprets number constants in arithmetic date expressions as numbers of
    days. For example, SYSDATE + 1 is tomorrow. SYSDATE - 7 is one week ago.
    SYSDATE + (10/1440) is ten minutes from now. Subtracting the hiredate column
    of the emp table from SYSDATE returns the number of days since each employee
    was hired. You cannot multiply or divide DATE values.

    Also probier mal:

    Beispiel:

    select table_name, last_analyzed from dba_tables
       where last_analyzed < sysdate - 7;

    Gruss

    Bernd

  3. Hallo Hoscha,

    Wie sieht eine WHERE-Bedingung aus, dass ich nur die Reihen aus einer Tabelle erhalte, die im gegebenen Datumsfeld nur 7 Tage hinter dem heutigen Datum liegen?

    P.S.: das ganze spielt sich in einer oracle-datenbank ab.

    SELECT * FROM meineTabelle WHERE Datum >= (SYSDATE - 7);

    Gruss Ace