GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

judisi
Beiträge: 5
Registriert: Mo, 06.08.2007 21:34

GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST

Beitrag von judisi »

Dachte das sei ganz simple. Gib das Geburtsdatum ein und eine Abfrage rechnet mir dann das Alter aus. Die Formel DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) sollte das Ergebnis bringen.
Doch: das stimmt nicht. Das berechnet nur, wie alt derjenige noch dieses Jahr wird.

Wie komme ich zum tatsächlichen Alter?

PS: Ich verstehe nichts von sql und Co., sondern kann nur klicken ...
Zuletzt geändert von judisi am Fr, 07.09.2007 18:56, insgesamt 1-mal geändert.
SüdSauerland
***
Beiträge: 86
Registriert: Di, 07.08.2007 21:04

Re: Alter auf Grund von Geburtsdatum berechnen

Beitrag von SüdSauerland »

Das Problem habe ich auch !

Wo hast du die Formel eingegeben ?
In einer Abfrage oder geht das direkt in einer Tabelle ?

Kennst du diesen Beitrag ?
viewtopic.php?f=8&t=11547&p=45589&hilit ... tag#p45589
Windows Win10 # LibreOffice immer aktuell # Nicht mehr im Einsatz => OpenOffice 4.x
judisi
Beiträge: 5
Registriert: Mo, 06.08.2007 21:34

Re: Alter auf Grund von Geburtsdatum berechnen

Beitrag von judisi »

1. Formel habe ich in der Abfrage eingegeben
2. Die Beschreibung im Link führt bei mir zu exakt dem gleichen Ergebnis - Error
judisi
Beiträge: 5
Registriert: Mo, 06.08.2007 21:34

Re: Alter auf Grund von Geburtsdatum berechnen

Beitrag von judisi »

Also wenn ich in der Abfrage:

( DATEDIFF( 'dd', "Geburtstag", CURDATE( ) ) ) / 365,25

eingebe, kommt das schon ganz gut hin. Nur: Der Computer rechnet, und rechnet ....

Ich kann mir nur nicht vorstellen, dass ich der einzige bin, der auf Grundlage eines Geburtsdatums das Alter berechnen möchte ... hat niemand ein (besseres) Rezept?
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Alter auf Grund von Geburtsdatum berechnen

Beitrag von Toxitom »

Hey judisi,

Die Formel
( DATEDIFF( 'dd', "Geburtstag", CURDATE( ) ) )
ist schon gut - wenn du es aber "Taggenau" willst, so fügst du den folgenden Teil hinzu:

( DATEDIFF( 'dd', "Geburtstag", CURDATE( ) ) ) - CASEWHEN( DAYOFYEAR("Geburtstag") > DAYOFYEAR(CURDATE()), -1, 0)

das heisst, das Alter wird um 1 reduziert, wenn der Geburtstag noch folgt, sonst stimmte ja die Formel :-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
judisi
Beiträge: 5
Registriert: Mo, 06.08.2007 21:34

Re: Alter auf Grund von Geburtsdatum berechnen

Beitrag von judisi »

Danke. Habe es gerade so gelöst und wollte es ins Forum schreiben:

CASEWHEN( DAYOFYEAR( "Geburtstag" ) > DAYOFYEAR( CURDATE( ) ), DATEDIFF( 'year', "Geburtstag", CURDATE( ) ) - 1, DATEDIFF( 'year', "Geburtstag", CURDATE( ) ) )
SüdSauerland
***
Beiträge: 86
Registriert: Di, 07.08.2007 21:04

Re: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST

Beitrag von SüdSauerland »

In meiner DB habe ich eine Tabelle in der ich das Feld „Geb“ vom Typ Datum [Date] habe.

Wenn ich nun in einer Abfrage im Bereich Kriterium
CASEWHEN( DAYOFYEAR( "Geb" ) > DAYOFYEAR( CURDATE( ) ), DATEDIFF( 'year', "Geb", CURDATE( ) ) - 1, DATEDIFF( 'year', "Geb", CURDATE( ) ) )
eingebe, erhalte ich die Meldung:

Warnung!

Der eingegebene Wert ist kein gültiges Datum. Bitte geben Sie ein Datum in einem gültigen Format ein, z.B. TT.MM.JJ.

Warum ?
Windows Win10 # LibreOffice immer aktuell # Nicht mehr im Einsatz => OpenOffice 4.x
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST

Beitrag von Toxitom »

Hey SuedSauerland,

Was soll das 'year' sein? Schätze, der Fehler liegt dort???

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
SüdSauerland
***
Beiträge: 86
Registriert: Di, 07.08.2007 21:04

Re: Alter auf Grund von Geburtsdatum berechnen

Beitrag von SüdSauerland »

Das habe ich so übernommen und nur den Feldnamen Geburtstag durch Geb ersetzt.
judisi hat geschrieben:Danke. Habe es gerade so gelöst und wollte es ins Forum schreiben:

CASEWHEN( DAYOFYEAR( "Geburtstag" ) > DAYOFYEAR( CURDATE( ) ), DATEDIFF( 'year', "Geburtstag", CURDATE( ) ) - 1, DATEDIFF( 'year', "Geburtstag", CURDATE( ) ) )
Windows Win10 # LibreOffice immer aktuell # Nicht mehr im Einsatz => OpenOffice 4.x
Benutzeravatar
stw
*
Beiträge: 16
Registriert: Sa, 22.12.2007 16:20
Wohnort: Veitshöchheim
Kontaktdaten:

Re: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST

Beitrag von stw »

Guten Tag zusammen,

bin seit gerade eben neu dabei! Grund für meine Anmeldung war, daß ich hier sofort eine Lösung für mein Problem gefunden habe, es ging um die "Alters"-Frage in Abhängigkeit vom Geburtstag. Und da wollte ich auch meinen Teil dazu beitragen.

Die vorgeschlagene Lösung habe ich ausprobiert, aber sie lieferte bei mir ein falsches Ergebnis, weil ich das Alter auf einen Stichtag "17.12.2007" bezogen wissen wollte. Als Geburtsdatum hatte ich die drei Daten 16.12.1980, 17.12.1980 und 18.12.1980 angegeben. Um es kurz zu machen: 1980 war zufälligerweise ein Schaltjahr, und da war der 17.12. ein anderer "DayOfYear" als in 2007.

Die Umgebung: In einer Tabelle "tbAuswZeitraum" gibt es genau einen Satz, und der hat im Feld "AuswStichtag" den Wert "17.12.2007" stehen. In der Tabelle "tbMitglieder" gibt es das Feld "Geburtsdatum".

Meine Lösung: Ich vergleiche die Monat-/Tag-Kombination der beiden Datumsangaben. Der Abfragen-Text:

Code: Alles auswählen

SELECT 
"tbMitglieder"."Geburtsdatum" 
, "tbAuswZeitraum"."AuswStichtag"
, month("tbMitglieder"."Geburtsdatum") * 100 + dayofmonth("tbMitglieder"."Geburtsdatum" ) as monat_gebdat
, month("tbAuswZeitraum"."AuswStichtag") * 100 + dayofmonth("tbAuswZeitraum"."AuswStichtag" ) as monat_stichtag
, CASEWHEN( month("tbMitglieder"."Geburtsdatum") * 100 + dayofmonth("tbMitglieder"."Geburtsdatum" ) >
                         month("tbAuswZeitraum"."AuswStichtag") * 100 + dayofmonth("tbAuswZeitraum"."AuswStichtag" ),
                               DATEDIFF( 'year', "tbMitglieder"."Geburtsdatum", "tbAuswZeitraum"."AuswStichtag") - 1, 
                               DATEDIFF( 'year', "tbMitglieder"."Geburtsdatum", "tbAuswZeitraum"."AuswStichtag") ) as alter_stichtag
 FROM "tbAuswZeitraum", "tbMitglieder" 
WHERE "tbMitglieder"."Nachname" like 'T%'
order by "Geburtsdatum"
Das Geburtsdatum 17. und 18. (!) ergeben das Alter 27, der 19. ergibt 26 Jahre alt.

Also keine Probleme mehr mit dem Schaltjahr!
Der vollständige Stillstand ist nur erreichbar durch Rennen entgegen der Erdrotation.
[Eroc]
OOo 3.1.0 mit Sun Report Builder 1.1.0 unter Windows Vista
SüdSauerland
***
Beiträge: 86
Registriert: Di, 07.08.2007 21:04

Re: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST

Beitrag von SüdSauerland »

Hallo zusammen,

funktioniert diese Abfrage noch bei euch ?
In der eigentlichen Abfrage habe ich keine Probleme mit

Code: Alles auswählen

CASEWHEN( MONTH( "Tab-Stammdaten"."Geb" ) * 100 + DAYOFMONTH( "Tab-Stammdaten"."Geb" ) > MONTH( CURDATE( ) ) * 100 + DAYOFMONTH( CURDATE( ) ), DATEDIFF( 'year', "Tab-Stammdaten"."Geb", CURDATE( ) ) - 1, DATEDIFF( 'year', "Tab-Stammdaten"."Geb", CURDATE( ) ) )
nur wenn ich mit einem Bericht auf diese Felder zurückgreifen möchte bekomme ich immer einen Fehler.

Siehe hier:
viewtopic.php?f=8&t=36707

Gruß SüdSauerland
Windows Win10 # LibreOffice immer aktuell # Nicht mehr im Einsatz => OpenOffice 4.x
Antworten