Oracle Sysdate
Moin alle zusammen
Bin gerade eine Abfrage in Oracle am schreiben, welche Daten aus einem mehr oder weniger bestimmten Zeitraum aus der Datenbank ziehen soll.
Habe hier den Ansatz aber komme an dem Punkt nicht weiter, bei dem ich in der Abfrage deklarieren soll, das er immer vom Anfang des Jahres gehen soll.
Ein Auszug des Scripts:
select count (ANR) as morgen from relcb
where saint = '60'
and segm1_term > to_date ('01012010','DDMMYYYY') --hier soll er immer von dem aktuellen Jahr ausgehen sprich 01.01.
and segm1_term < trunc(sysdate) +1 -- das funktioniert (is ja auch nicht schwer einen tag draufzurechnen)
Gibt es auch eine Möglichkeit die Anfrage so anzupassen, das er auch nur in der aktuellen KW nachschaut, welche Daten vorhanden sind? Sprich das wenn ich mir die Daten zum Beispiel heute aus der Datenbank ziehen möchte, das er trotzdem nur bis zum 07.11.2010 geht? Mit trunk(sysdate) + 7 geht ja immer sieben Tage weiter -.-
Vielen Dank schonmal im Vorraus
Bin gerade eine Abfrage in Oracle am schreiben, welche Daten aus einem mehr oder weniger bestimmten Zeitraum aus der Datenbank ziehen soll.
Habe hier den Ansatz aber komme an dem Punkt nicht weiter, bei dem ich in der Abfrage deklarieren soll, das er immer vom Anfang des Jahres gehen soll.
Ein Auszug des Scripts:
select count (ANR) as morgen from relcb
where saint = '60'
and segm1_term > to_date ('01012010','DDMMYYYY') --hier soll er immer von dem aktuellen Jahr ausgehen sprich 01.01.
and segm1_term < trunc(sysdate) +1 -- das funktioniert (is ja auch nicht schwer einen tag draufzurechnen)
Gibt es auch eine Möglichkeit die Anfrage so anzupassen, das er auch nur in der aktuellen KW nachschaut, welche Daten vorhanden sind? Sprich das wenn ich mir die Daten zum Beispiel heute aus der Datenbank ziehen möchte, das er trotzdem nur bis zum 07.11.2010 geht? Mit trunk(sysdate) + 7 geht ja immer sieben Tage weiter -.-
Vielen Dank schonmal im Vorraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 154244
Url: https://administrator.de/contentid/154244
Ausgedruckt am: 05.11.2024 um 19:11 Uhr
3 Kommentare
Neuester Kommentar
Moin DerLomi,
alternativ zu dem to_date()/to_char()-Gemähre würde ich eher auf die Datumsarithmetik mit TRUNC() vertrauen.
Für den simplen Fall, den du oben skizziert hast, wäre das
== vom 1.1.dieses Jahres bis heute (jeweils einschließlich)
Für das Zusatzschmankerl "nur in der aktuellen KW" ...
Na ja, sag mir, was für dich/euer Unternehmen/eure Daten die "aktuelle Kalenderwoche" ist, dann schaun mer ma...
Die "aktuelle KW" kann mit einem Montag anfangen und mit einem Sonntag enden oder aber so beginnen, das Mittwoch in der Mitte der Woche liegt.
Heute am 3.11.2010 kann je nach Perspektive und Norm die KW 44 oder 45 sein...
Je nachdem welche -ich sach' ma' - "Konvention" ihr verwenden wollt ...
--> Spiel dich mit den TRUNC(sysdate, 'IW') und TRUNC(sysdate, 'WW')-Variationen zum Ziel.
Grüße
Biber
alternativ zu dem to_date()/to_char()-Gemähre würde ich eher auf die Datumsarithmetik mit TRUNC() vertrauen.
Für den simplen Fall, den du oben skizziert hast, wäre das
select count (ANR) as morgen from relcb
where saint = '60'
and segm1_term BETWEEN trunc(sysdate, 'YYYY') and sysdate
Für das Zusatzschmankerl "nur in der aktuellen KW" ...
Na ja, sag mir, was für dich/euer Unternehmen/eure Daten die "aktuelle Kalenderwoche" ist, dann schaun mer ma...
Die "aktuelle KW" kann mit einem Montag anfangen und mit einem Sonntag enden oder aber so beginnen, das Mittwoch in der Mitte der Woche liegt.
Heute am 3.11.2010 kann je nach Perspektive und Norm die KW 44 oder 45 sein...
Je nachdem welche -ich sach' ma' - "Konvention" ihr verwenden wollt ...
--> Spiel dich mit den TRUNC(sysdate, 'IW') und TRUNC(sysdate, 'WW')-Variationen zum Ziel.
Grüße
Biber