Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Das Alter in Jahre, Monate und Tage ausgeben (https://www.delphipraxis.net/215686-das-alter-jahre-monate-und-tage-ausgeben.html)

Kostas 20. Aug 2024 20:57

Datenbank: Firebird • Version: 3.0 • Zugriff über: FireDac

Das Alter in Jahre, Monate und Tage ausgeben
 
Halo Zusammen,

gibt es eine Möglichkeit in einer Firebird StoredProc das Alter in Jahre, Monate und Tage einer Person auszugeben?

In Excel gibt es einen Parameter bei DateDif "ym" "gibt die Anzahl der verbleibenden Monate nach dem letzten vollen Jahr zurück"
https://support.microsoft.com/de-de/...5-46100a162f38

himitsu 20. Aug 2024 22:14

AW: Das Alter in Jahre, Monate und Tage ausgeben
 
Eigentlich: die Differenz als INTERVAL und dort steht dann alles genau drin.
Und falls nötig kann man dort anschließend die Tage/Monate/Jahre einzeln rausholen.



Bei Google suchenfirebird datediff :stupid:

Falls das datediff der des DBMS nur einen Integer liefert,
die Differenz einfach in Monaten.
diff div 12 = Jahre
diff mod 12 = Monate
Rest = Tage

Wenn diff Nachkommastellen hat, dann sind das die "Tage" des letzten Monats
oder z.B.
StartDatum mit dateadd(Jahre und Monate) ... und dann datediff(für Days) zum EndDatum

IBExpert 21. Aug 2024 06:02

AW: Das Alter in Jahre, Monate und Tage ausgeben
 
Code:
select
datediff(year,cast('14.8.1966' as date),current_date) jahre,
datediff(month,cast('14.8.1966' as date),current_date) monate,
datediff(day, cast('14.8.1966' as date),current_date) tage
from rdb$database

JAHRE   MONATE   TAGE
58   696   21192
falls monate und tage aber nur anteilig gebraucht werden, musst du mit dateadd vom aktuellen geburtsdatum
noch weiter rechnen, ist aber alles mit internen funktionen machbar (hb da ein anderes datum genommen, damit das ergebnis auch was zeigt)

Code:
select
datediff(year,cast('2.1.1966' as date),current_date) jahre,
datediff(month,cast('2.1.'||extract(year from current_date) as date),current_date) monate,
datediff(day, dateadd(month,datediff(month,cast('2.1.'||extract(year from current_date) as date),current_date),cast('2.1.'||extract(year from current_date) as date) ),current_date) tage
from rdb$database

JAHRE   MONATE   TAGE
58   7   19

Jumpy 21. Aug 2024 07:19

AW: Das Alter in Jahre, Monate und Tage ausgeben
 
datediff(month,cast('2.1.'||extract(year from current_date) as date),current_date) monate,

Funktioniert das denn auch, wenn der Geburtstag dieses Jahr noch nicht gewesen ist, also z.B. mit 2.11.?

Kostas 25. Aug 2024 15:47

AW: Das Alter in Jahre, Monate und Tage ausgeben
 
Ich habe hier eine Stored Function gefunden die genau das macht was ich brauche. :-)

https://dba.stackexchange.com/questi...ars-months-and


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 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-2025 by Thomas Breitkreuz