Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Jahrestage berechnen (https://www.delphipraxis.net/179777-jahrestage-berechnen.html)

Luckner 31. Mär 2014 20:01

Datenbank: Firebird • Version: 2.1 • Zugriff über: IBdataset

Jahrestage berechnen
 
Hallo,

möchte in meiner Anwendung für unser Verein eine Übersicht über Jahrestage (Geburtstage, Zugehörigkeit usw.) erstellen. Die gesamten Daten sind schon in einer Tabelle vorhanden. Den Mitgliedern soll gratulliert werden zum halben und vollem Jahrzehnt also 20. Geburtstag, 25.-ter, 30.-ter usw. Jetzt fehlt mir der Ansatz für einen Algorithmus. Wie bekommt man raus, anhand des Geburtsdatums, wie alt der Mensch ist. Gibt es in Delphi schon fertige Proceduren dafür?

Danke, Luckner

juergen 31. Mär 2014 20:17

AW: Jahrestage berechnen
 
Hallo,

für solche Berechnungen wandle ich das Datum gern um in das Format JJJJMMTT. Dann kannst du "ganz normal rechnen", z.B. aktuelles Jahr - Geburtsjahr = Alter.
Für deine Anforderungen könnte die Mod Funktion hilfreich sein.

Perlsau 31. Mär 2014 20:28

AW: Jahrestage berechnen
 
Schau dir einfach mal die folgenden Funktionen an:

System.DateUtils.YearsBetween
System.DateUtils.DaysBetween
System.DateUtils.HoursBetween
System.DateUtils.MinutesBetween
System.DateUtils.SecondsBetween

dataspider 31. Mär 2014 20:54

AW: Jahrestage berechnen
 
Hi,

ich habe dafür eine SP in der Firebird DB:

Code:
create or alter procedure get_age (
    geb_datum date$,
    datum date$ = null)
returns (
    result smallint$)
as
begin
  result = null;
  if (:geb_datum is not null) then
  begin
    if (:datum is null) then
      datum = current_date;
    result = extract(year from :datum) - extract(year from :geb_datum);
    -- wenn Tag erst noch kommt, dann minus 1
    if (extract(month from :geb_datum) >= extract(month from :datum)) then
    begin
      if (extract(month from :geb_datum) > extract(month from :datum)) then
        result = :result - 1;
      else
        if (extract(day from :geb_datum) > extract(day from :datum)) then
          result = :result - 1;
    end
  end
  suspend;
end
Wobei date$ und smallint$ Domains sind.

Dann kannst du mit:
select result from get_age(geb_datum) das Alter ermitteln.

Frank

mkinzler 31. Mär 2014 20:57

AW: Jahrestage berechnen
 
Oder man nimmt die entsprechende Funktion von FireBird

DateDiff()

dataspider 31. Mär 2014 21:34

AW: Jahrestage berechnen
 
Zitat:

Zitat von mkinzler (Beitrag 1254247)
Oder man nimmt die entsprechende Funktion von FireBird

DateDiff()

Wie machst du das?
Ich habe es damit nämlich nicht hinbekommen!

Frank

samso 1. Apr 2014 12:38

AW: Jahrestage berechnen
 
Es gab da mal einen Beitrag von Wolfgang Mix der evntuell hilfreich sein könnte

http://www.delphipraxis.net/141399-d...unktionen.html

Wolfgang Mix 1. Apr 2014 13:33

AW: Jahrestage berechnen
 
... und es gibt ein Tutorial :-D

http://www.delphipraxis.net/146593-a...errechnen.html

den Rest müßte eine Abfrage lösen, etwa
if alter mod 5 = 0 then...

Luckner 1. Apr 2014 20:20

AW: Jahrestage berechnen
 
Danke für die Hinweise. Werde mich damit auseinander setzen. Hatte schon so ein Gefühl, dass das keine 08/15-Aufgabe sein wird. Aber so macht das Programmieren auch Spass.

Danke, Luckner


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 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