kaiuwe28
Goto Top

Oracle SQL - Abfrage über den Vormonat - Berechnen des Vormonats

Hallo zusammen,

ich finde des Rätsels Lösung nicht...

Via Oracle SQL Abfrage möchte ich von einer Tabelle alle Einträge für das "Post_Date" des Vormonats.
Wenn ich es eingebe, dann klappt das ohne Probleme:

and A.Post_date >= to_date('01.01.2019', 'dd.mm.yyyy')  
and A.Post_date <= to_date('31.01.2019', 'dd.mm.yyyy')  

Die Abfrage soll jedoch automaisch z.B. am 3. Werktag im Folgemonat laufen (Ausführung über AutoIt) und dafür müsste sich das Datum für den Vormonat selbstständig berechnen.

Mein letzter Versuch:

and A.Post_date >= LAST_DAY(current_date - 2 MONTH) + 1 DAY
and A.Post_date <= LAST_DAY(current_date - 1 MONTH)

Fehlermeldung:
ORA-00907: missing right parenthesis

Markiert wird immer MONTH.

Könnte ihr mir bitte bei der korrekten Abfrage helfen?

Danke und viele Grüße

Jens

Content-ID: 422039

Url: https://administrator.de/contentid/422039

Ausgedruckt am: 16.11.2024 um 19:11 Uhr

sabines
Lösung sabines 26.02.2019 um 06:46:44 Uhr
Goto Top
Moin,

das Datum wird bei Oracle mit

select sysdate from dual

abgefragt, hiermit solltesrt Du das Start und Enddatum des jeweiligen Vormonats abfragen können:

select
trunc(sysdate, 'mm') - interval '1' month last_month_start,  
trunc(sysdate, 'mm') - interval '1' second last_month_end,  
from dual

Gruss
kaiuwe28
kaiuwe28 26.02.2019 um 10:10:20 Uhr
Goto Top
Hallo sabines,

vielen Dank für deine Rückmeldung. Beim Googlen bin ich auch über diese Variante gestolpert, aber leider habe ich so gar keine Ahnung, wie ich das in Verbindung mit meiner Abfrage bringen kann. In meiner where Bedingung soll ja das Post_date eingegrenzt werden, aber wie ich deine Info in meine Abfrage baue verstehe ich nicht. Hast du da vielleicht auch ein Beispiel, wie ich dann nachvollziehen kann, wie meine Bedingung lauten muss?

Danke und viele Grüße
Jens
sabines
Lösung sabines 26.02.2019 um 12:47:49 Uhr
Goto Top
Du kannst das Post_date mit dem select sysdate verbinden oder auch ein Subselect machen, also so in diese Richtung:

and A.Post_date >=  (select trunc(sysdate, 'mm') - interval '1' month last_month_start from dual)  

Ich habe keinen Zugriff mehr auf Oracle, kann also sein, dass Du mit der Syntax spielen musst.
kaiuwe28
kaiuwe28 27.02.2019 um 06:22:30 Uhr
Goto Top
Danke schon mal face-smile
Bin bis Freitag auf Schulung - schaue mal, dass ich nachher mal probieren kann.
Ein ähnliches Subselect hatte ich beim googlen auch schon gefunden, aber wahrscheinlich auch nur zur Hälfte korrekt verwendet.

Ich probiere und gebe schnellstmöglich eine Rückinfo.
kaiuwe28
kaiuwe28 27.02.2019 um 18:43:11 Uhr
Goto Top
Ich habe gerade getestet und es klappt bestens. Vielen Dank face-smile