Vor nicht all zu langer Zeit stellte sich mir “arbeitsbedingt” die Frage wie man mit Hilfe von PL/SQL den letzten Tag des Vormonats bzw. eines beliebigen Monats herausfindet. Eine Google Suche hat nicht direkt den erwünschten Erfolg gebracht und deshalb musste ich mir selbst etwas überlegen 😉
PL SQL Erklärung der Tage
Hier nun das Ergebnis:
Man füge folgende Zeilen Code in seine Abfrage ein und alles funktioniert wie geschmiert.
last_day (Add_months(sysdate,-1))
Es handelt sich hierbei um die folgenden beiden Befehle:
– Last_day = Mit dieser Funktion kann man den letzten Tag eines Monats bestimmen
– add_months = Mit dieser Funktion kann man von einem Datum (hier aktuelles Datum des Systems) einen Monat abziehen oder draufrechnen.
Ein Beispiel könnte so aussehen:
SELECT *
FROM Tabelle a
WHERE a.Datum = last_day (Add_months(sysdate,-1))
Ich hoffe ihr könnt damit was anfangen und spart euch die eine oder andere Minute “Codeerfinderei”!
Der Artikel hat euch gefallen? Ihr wollt keinen neuen Artikel mehr verpassen? Liked meine Facebook-Seite und ihr verpasst keinen Artikel mehr und es gibt jede Menge zusätzlicher Infos und Videos, die es nicht auf diese Seite schaffen aber auch verdammt lustig sind. Oder ihr abonniert den RSS Feed!
funktioniert nicht am 1. des Monats:
select last_day (Add_months(to_date(‘01.10.2016′,’dd.mm.yyyy’),-1)) from dual
–30.09.2016
Hallo abc,
ich verstehe deinen Kommentar nicht. Funktioniert das SQL oben nicht und deins ist die Lösung oder funktioniert dein Script nicht?
Es ging wohl darum zu zeigen, dass es für den ersten eines Monats nicht funktioniert, da das Ergebnis (hier 30.09.2016) negativ dargestellt wird (-30.09.2016)
Selbstverständlich funktioniert das immer auch am Ersten eines Monats.
Da kommt kein “negatives” Datum heraus, denn add_months(,-1) ergibt immer ein gültiges Datum und von dem aus kann man immer mit last_day(…) den letzten des betreffenden Monats ermitteln.