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]

Antwort per Email an