Robert Großkopf schrieb:
Hallo Bernhard,
die Datenübernahme von der Tabelle in die Datenbank hat funktioniert. In
der Tabelle habe ich folgende Formel für eine Altersberechnung:
_jahre("geb.-datum";heute();1)_ ; damit wird ganz einfach eine
Alterszahl berechnet.
Frage: Wie kann ich diese Berechnung in der Datenbank ausführen? Bei der
Erstellung habe ich kein "berechnungsfeld" gefunden.
Du meinst vermutlich die Erstellung von Tabellen. Die sind in Datenbanken auch
nicht zum Berechnen gedacht. Sie sollen einzig und allein Daten aufnehmen.
Das Berechnen kannst Du zumindest teilweise über Abfragen regeln, so auch das
Berechnen des Alters.
Angenommene Tabelle:
ID Name GebDat
Aus dem GebDat (Geburtsdatum) willst Du das Alter berechnen:
Abfrage
SELECT "Name", CASEWHEN( DAYOFYEAR( "GebDat" ) > DAYOFYEAR( NOW( ) ),
DATEDIFF( 'yy', "GebDat", NOW( ) ) - 1, DATEDIFF( 'yy', "GebDat", NOW( ) ) )
AS "Alter" FROM "Tabelle"
Warum so kompliziert? Ich habe unten einfach den Text aus einer Erklärung zu
einer Beispieldatenbank kopiert:
DATEDIFF( 'yy', "GebDat", NOW( ) ) ergibt den Unterschied zwischen dem Datum
aus „GebDat“ und dem heutigen Datum. Allerdings werden, zumindest bei der
HSQLDB, auf diese Art und Weise nur die Jahreszahlen ('yy') verglichen. Liegt
das Geburtsdatum im Vorjahr, so erscheint auf diese Weise auf jeden Fall eine
„1“ bei der Berechnung – auch wenn heute gerade der 1.1. ist und die Person am
31.12. geboren wurde.
Daraus ergibt sich ein etwas umfassenderer Aufbau der Berechnung für das
momentane Alter:
CASEWHEN( DAYOFYEAR( "GebDat" ) > DAYOFYEAR( NOW( ) ), DATEDIFF( 'yy',
"GebDat", NOW( ) ) - 1, DATEDIFF( 'yy', "GebDat", NOW( ) ) ) für den Fall,
dass der Tag, gezählt als Tag im Jahr, von dem Geburtsdatum größer ist als der
Tag heute, soll von der Jahresdifferenz 1 abgezogen werden. Ansonsten ist die
Jahresdifferenz in das Feld zu schreiben.
Gruß
Robert
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
Hallo Robert,
danke für die Hilfe, aber ging in die Hose. Ich habe den Term kopiert
und dann in das Feld bei "alter" eingetragen. Trotz Anpassung an meine
Schreibweise habe ich nur die Formel in der Anzeige. Warum so
kompliziert????????, ich habe ja nicht mit so etwas gerechnet, "dachte"
eben eine Anzeige für runde (40,45,50 etc) Geburtstage bzw. Daten für
Hochzeitstage. Aber das ist erst mal gestrichen, vielleicht später
(2-3Jahre) wenn ich einiges gelernt haben sollte.
Danke und Gruß
Bernhard
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]