arbeiten mit date unter oracle
Hoscha
- datenbank
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
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
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?
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
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
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
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