Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Berechnung von Anfang der Monats / Ende des Monats (https://www.delphipraxis.net/120821-berechnung-von-anfang-der-monats-ende-des-monats.html)

HolgerCW 17. Sep 2008 09:35

Datenbank: ORACLE • Version: 10 • Zugriff über: BDE

Berechnung von Anfang der Monats / Ende des Monats
 
Hallo zusammen,

ich fülle in einem Trigger auf der ORACLE - Datenbank eine Datumsvariable.

Jetzt möchte ich in dem Trigger zu dem Datum einmal den Anfang des Monats und einmal das Ende des Monats bestimmen. Soll heissen:

17.09.2008 -> Anfang: 01.09.2008 Ende: 30.09.2008

Wie mache ich das ?

Delphi-Quellcode:
DECLARE
 my_naechste_uw DATE;
 my_naechster_alarm DATE;
 my_alarm varchar2(100);

BEGIN
 
 ...

 If my_alarm = 'Anfang des Monats' THEN
  my_naechster_alarm := my_naechste_uw - ???;
 END IF;

END;
/
Gruss

Holger

mkinzler 17. Sep 2008 09:37

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Schau dir mal die Unit DateUtils an

HolgerCW 17. Sep 2008 09:39

Re: Berechnung von Anfang der Monats / Ende des Monats
 
In Delphi könnte ich das ...

... nur weiss ich nicht wie ich das in einem Trigger auf der ORACLE-Datenbank umsetze ?

DeddyH 17. Sep 2008 09:42

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Der erste Tag des Monats ist ja immer der 1., zum letzten kannst Du die Oracle-Funktion LAST_DAY benutzen.

GroHae 17. Sep 2008 09:45

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Ich bin mir nicht sicher ob ich dich verstanden habe, aber:

Datum kannst du mit :
Delphi-Quellcode:
var Year, Month, Day: word;
begin
  DecodeDate(Date, Year, Month, Day);
  .....
end;
zerlegen


Letzte Tage des Monats etwa so:
Delphi-Quellcode:
  result := IncMonth(StrToDate('01.' + IntToStr(iMonat) + '.' + IntToStr(iJahr)),1) - 1;
Erste Tag mit
Delphi-Quellcode:
  result := EncodeDate(Year, Month, Day);
Day = 01

DeddyH 17. Sep 2008 09:49

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Öhm, wenn ich das richtig verstanden habe, geht es nicht um Delphi, sondern um PL/SQL.

HolgerCW 17. Sep 2008 10:00

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Richtig,

es geht um Oracle. Das mit dem LAST_DAY hat schon super geklappt.

Wie kann ich denn in ORACLE das Datum zerpflücken und dann den Tag auf "01" setzen ?

Gruss

Holger

DeddyH 17. Sep 2008 10:05

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Das müsste mit TRUNC gehen.

HolgerCW 17. Sep 2008 10:10

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Bin da auf dem Holzweg. Gib mir mal einen Anstoss ...

So gehts nicht:

Delphi-Quellcode:
my_naechster_alarm := TRUNC(my_naechste_uw, '01-MM-YYYY');

DeddyH 17. Sep 2008 10:12

Re: Berechnung von Anfang der Monats / Ende des Monats
 
SQL-Code:
my_naechster_alarm := TRUNC(my_naechste_uw,'MONTH');
Ungetestet.

[edit] beim C&P zuviel dringelassen [/edit]

HolgerCW 17. Sep 2008 10:25

Re: Berechnung von Anfang der Monats / Ende des Monats
 
... wenn Du mir jetzt noch von die Berechnung für:

- Ende des Jahres
-> Lösung:
Delphi-Quellcode:
 
TRUNC(TRUNC(TRUNC(my_naechste_uw + 366), 'YEAR') - 1)
- Ende des Quartals
-> Lösung
Delphi-Quellcode:
TRUNC(TRUNC(TRUNC(my_naechste_uw + 92), 'Q') - 1);
von dem Monat ausgehend, verraten kannst, dann habe ich alles. Schon mal danke.

-> habe es glaube ich selber raus gefunden, wie oben zu sehen. Wenn Du eine eleganterere Lösung kennst kannst Sie ja noch posten.

Gruss

Holger

DeddyH 17. Sep 2008 10:35

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Für das Jahresende solltest Du Dir mal diesen Thread durchlesen. Quartalsende dürfte etwas schwieriger werden, das kann ich hier ohne Oracle schlecht ausprobieren.

HolgerCW 18. Sep 2008 08:20

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Vielen dank für all Deine Hilfen.

DeddyH 18. Sep 2008 08:24

Re: Berechnung von Anfang der Monats / Ende des Monats
 
Gern geschehen :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz