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

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: GELÖST Alter auf Grund von Geburtsdatum berechnen GELÖST

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

von SüdSauerland » Mi, 24.11.2010 22:39

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

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

von stw » Sa, 22.12.2007 16:35

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!

Re: Alter auf Grund von Geburtsdatum berechnen

von SüdSauerland » Sa, 08.09.2007 11:22

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( ) ) )

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

von Toxitom » Sa, 08.09.2007 10:19

Hey SuedSauerland,

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

Gruss
Thomas

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

von SüdSauerland » Fr, 07.09.2007 20:40

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 ?

Re: Alter auf Grund von Geburtsdatum berechnen

von judisi » Fr, 07.09.2007 18:55

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( ) ) )

Re: Alter auf Grund von Geburtsdatum berechnen

von Toxitom » Fr, 07.09.2007 16:21

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

Re: Alter auf Grund von Geburtsdatum berechnen

von judisi » Do, 06.09.2007 22:36

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?

Re: Alter auf Grund von Geburtsdatum berechnen

von judisi » Do, 06.09.2007 22:14

1. Formel habe ich in der Abfrage eingegeben
2. Die Beschreibung im Link führt bei mir zu exakt dem gleichen Ergebnis - Error

Re: Alter auf Grund von Geburtsdatum berechnen

von SüdSauerland » Do, 06.09.2007 21:49

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

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

von judisi » Do, 06.09.2007 20:09

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 ...

Nach oben