GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST
Moderator: Moderatoren
GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST
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 ...
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.
-
- ***
- Beiträge: 86
- Registriert: Di, 07.08.2007 21:04
Re: Alter auf Grund von Geburtsdatum berechnen
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
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
Re: Alter auf Grund von Geburtsdatum berechnen
1. Formel habe ich in der Abfrage eingegeben
2. Die Beschreibung im Link führt bei mir zu exakt dem gleichen Ergebnis - Error
2. Die Beschreibung im Link führt bei mir zu exakt dem gleichen Ergebnis - Error
Re: Alter auf Grund von Geburtsdatum berechnen
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?
( 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?
Re: Alter auf Grund von Geburtsdatum berechnen
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
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
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: Alter auf Grund von Geburtsdatum berechnen
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( ) ) )
CASEWHEN( DAYOFYEAR( "Geburtstag" ) > DAYOFYEAR( CURDATE( ) ), DATEDIFF( 'year', "Geburtstag", CURDATE( ) ) - 1, DATEDIFF( 'year', "Geburtstag", CURDATE( ) ) )
-
- ***
- Beiträge: 86
- Registriert: Di, 07.08.2007 21:04
Re: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST
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 ?
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
Re: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST
Hey SuedSauerland,
Was soll das 'year' sein? Schätze, der Fehler liegt dort???
Gruss
Thomas
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
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- ***
- Beiträge: 86
- Registriert: Di, 07.08.2007 21:04
Re: Alter auf Grund von Geburtsdatum berechnen
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
Re: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST
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:
Das Geburtsdatum 17. und 18. (!) ergeben das Alter 27, der 19. ergibt 26 Jahre alt.
Also keine Probleme mehr mit dem Schaltjahr!
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"
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
[Eroc]
OOo 3.1.0 mit Sun Report Builder 1.1.0 unter Windows Vista
-
- ***
- Beiträge: 86
- Registriert: Di, 07.08.2007 21:04
Re: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST
Hallo zusammen,
funktioniert diese Abfrage noch bei euch ?
In der eigentlichen Abfrage habe ich keine Probleme mit
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
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( ) ) )
Siehe hier:
viewtopic.php?f=8&t=36707
Gruß SüdSauerland
Windows Win10 # LibreOffice immer aktuell # Nicht mehr im Einsatz => OpenOffice 4.x