![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBO
Vormonat ermitteln
Hallo,
Kann mir jemand kurz helfen. Wie kann ich am einfachsten (wir gehen vom aktuellen Datum aus) den Vormonat ermitteln ? wir haben den 12.01.2023 und ich benötige somit die 12 als Dezember sowie das Vorjahr also 2022. Vielleich kann mir auch jemand ein kleines Beispiel machen. Hintergrund: Ich muss aus einer Firebird Tabelle die ein Datum Feld enthält alle Datensätze des Vormonats ermitteln. Vielen Dank |
AW: Vormonat ermitteln
Vielleicht ist das eine Möglichkeit ?
![]()
Delphi-Quellcode:
function Vormonat(aDatum: TDateTime): String;
var J, M, T : word; begin DecodeDate(aDatum,J,M,T); aDatum := EncodeDate(J,M,1); Result := FormatDateTime('MMMM',aDatum-1); end; |
AW: Vormonat ermitteln
Das geht bei Direbird im SQL mit
![]() Da sagts halt monat -1 und bist im Vormonat. Würde dann noch auf ersten und letzten des Monats mit BETWEEN gehen... das kannst auch alles mit DATEADD berechnen Eventuell so :
Code:
WHERE DATE BETWEEN dateadd(month, -1, CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) + 1)
AND CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) |
AW: Vormonat ermitteln
Delphi-Quellcode:
EinMonatFrüher := IncMonth(Now, -1);
AnfangDesVormonats := IncMonth(StartOfAMonth(Now), -1); ![]() ![]() ![]() ![]() ![]() Aber ja, als DB-Funktion, direkt im SQL, ist es natürlich "optimaler". Zitat:
Delphi-Quellcode:
(letzter Tag im Vormonat), bzw. eigentlich
IncDay(xxx, -1)
Delphi-Quellcode:
(erster Tag des Vormonat).
IncMonth(xxx, -1)
Genau genommen ist deine -1 "ein Tag vorher" und nicht "ein Monat vorher", aber da du dir vorher den Monatsanfang zusammenbaust und zum Schluß die Tage ignorierst, passt es schon. Funktional richtig, aber "eigentlich" er will ja den "Vormonat" und nicht den "Vortag" (vom Anfang des aktuellen Monat). Und nein, ein
Delphi-Quellcode:
gibt es natürlich nicht. :freak:
DecMonth(xxx)
|
AW: Vormonat ermitteln
Zitat:
Es wird auch mit -1 = einen Tag vorher funktionieren, weil ein das Datum zerlegt wird und daraus neues Datum gebaut wird, immer auf den 01.mm.yy gesetzt. Ein Tag vorher ist halt auch zwangsweise immer einen Monat vorher. Diese Idee finde ich ganz nett. Es ist aber nicht ganz klar, ob es jetzt überhaupt um Delphi oder um SQL geht. Beides wäre ja möglich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz