Altersberechnug

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

loeschknecht4711
Beiträge: 4
Registriert: Mo, 24.03.2008 08:04
Wohnort: Haltern am See

Altersberechnug

Beitrag von loeschknecht4711 »

Hallo,

wie kann ich in einer Base Datenbank das Alter aus dem Geburtsdatum berechnen?
MfG
loeschknecht4711
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Altersberechnug

Beitrag von Barlee »

Hallo loeschknecht,

das ist ganz einfach:

Code: Alles auswählen

SELECT
"[Spalte_mit_Geburtsdatum]",
DATEDIFF('yy', "[Spalte_mit_Geburtsdatum]",CURRENT_DATE) as "Alter"
from "[Deine_Tabelle]"
Gruß Barlee
loeschknecht4711
Beiträge: 4
Registriert: Mo, 24.03.2008 08:04
Wohnort: Haltern am See

Re: Altersberechnug

Beitrag von loeschknecht4711 »

Hallo Barlee,

vielen Dank für Deine schnelle Reaktion. Es funktioniert aber leider nicht. Hast Du noch eine Idee?

Gruß

Löschknecht
bello15
***
Beiträge: 53
Registriert: Fr, 10.11.2006 10:36

Re: Altersberechnug

Beitrag von bello15 »

Hallo loeschknecht4711,
Du hast erst wenige Beiträge im Forum geschrieben, vielleicht bis Du noch etwas ungeübt mit Base (falls doch, sorry).
Du hast eine Tabelle mit Namen "So_wie_noch" mit einer Spalte "geburtsdatum"
Du machst eine Abfrage mit dem Assistenten, wählst Deine Tabelle und von dieser Tabelle die Spalte Geburtsdatum.
Die Abfrage speichert Du unter dem Namen Deiner Wahl z.B. Test.
Klicke in der Übersicht der gespeicherten Abfragen mit rechts an und wähle Mit SQL bearbeiten.
Hier findest Du Deine bisherige Abfrage, die Du so ergänzen musst wie unten
SELECT
"geburtsdatum",
DATEDIFF('yy',"geburtsdatum",CURRENT_DATE) AS "Result" FROM "So_wie_noch"

Auspassen. die beiden yy stehen in ' '
Open Office 4.0.1
Windows 7 home premium SP 1
loeschknecht4711
Beiträge: 4
Registriert: Mo, 24.03.2008 08:04
Wohnort: Haltern am See

Re: Altersberechnug

Beitrag von loeschknecht4711 »

Hallo,
Problem gelöst dank Eurer Hilfe. Das nächste ist schon da wie kann ich auf ein Geburtsdatum 18 Jahre hinzurechen. Damit ich den Tag des 18. Geburtstags bestimmen kann?

MfG

Löschknecht 4711
MfG
loeschknecht4711
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Altersberechnug

Beitrag von Barlee »

Hallo Löschknecht,

Datumsberechnungen in der integrierten Datenbank HSQLDB werden bisher nicht bzw. sehr rudimentär unterstützt. Hilfreiche Funktionen, wie sie aus anderen DB Systemen bekannt sind (z.B. ADD_MONTHS, DATE_ADD), stehen nicht zur Verfügung.
Trotzdem kannst Du zum Ziel kommen:
Möchtest Du lediglich auf das Geburtsjahr die 18 hinzurechnen? D.h. genügt es Dir, nur das Jahr -ohne den Tag- zu erhalten, dann kannst Du folgende Zeile hinter dem SELECT und vor FROM einfügen:

Code: Alles auswählen

...
YEAR("Geburtsdatum")+18 as "Volljährig"
...
Benötigst Du darüberhinaus die genaue Angabe des Tages, dann müssten Schaltjahre berücksichtigt werden. Auch das ließe sich hinbekommen. Allerdings müsste dann geklärt werden, welchem Datum die Geburtstage der Personen zugeordnet werden, die zwar am 29.2. geboren sind, deren 18. Geburtstag aber in keinem Schaltjahr stattfindet.
Falls Du in der Art etwas benötigst, dann melde Dich am besten noch einmal.

Gruß Barlee
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Altersberechnug

Beitrag von Barlee »

Hallo Tilmann,

vermutlich benutzt Du die falsche Datenbank. Um den Befehl auszuführen, benötigst Du HSQLDB.

Ggf. musst Du das Paket "hsqldb" nachinstallieren
Vgl. auch: viewtopic.php?f=8&t=19478&p=82498&hilit=hsqldb#p82498

Gruß Barlee
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Altersberechnug

Beitrag von Barlee »

Hallo Tilmann,

ja, korrekt. Es handelt sich um HSQLDB Syntax.
Bliebe Dir also nur der Weg, aus der csv-Datei eine HSQLDB Tabelle zu machen. Bei Interesse siehe hier:
http://www.ooowiki.de/csvDatentabelle/Import

Gruß Barlee
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Altersberechnug

Beitrag von Barlee »

Hallo

eins vorweg: Die Formel liefert ein vollkommen korrektes Ergebnis und hat auch keinen Fehler. Sie ermittelt nunmal nur die Jahresdifferenz zwischen dem aktuellen und dem angegebenen (Geburts-) -Datum. Daher "DATEDIFF( 'yy'..."
Möchtest Du das genaue Alter, dann müssen Monate und Tage mitbetrachtet werden.

Passe folgendes an und baue es in Deine Abfrage ein:

Code: Alles auswählen

CASE 
WHEN MONTH("Geburtsdatum") > MONTH(CURRENT_DATE) 
THEN DATEDIFF( 'yy', "Geburtsdatum", CURRENT_DATE )-1
WHEN MONTH("Geburtsdatum") = MONTH(CURRENT_DATE) 
THEN 
(
CASE 
WHEN DAY("Geburtsdatum") > DAY(CURRENT_DATE) 
THEN DATEDIFF( 'yy', "Geburtsdatum", CURRENT_DATE )-1 
ELSE DATEDIFF( 'yy', "Geburtsdatum", CURRENT_DATE )
END
)
ELSE DATEDIFF( 'yy', "Geburtsdatum", CURRENT_DATE )
END AS "Alter"
SQL direkt ausführen aktivieren! Spaltenbezeichner, Tabellennamen und Aliase in Anführungsstriche!

Gruß Barlee
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Altersberechnug

Beitrag von Barlee »

Hallo Tino,

ganz einfach!
Du ersetzt DATEDIFF( 'yy', "Geb am", CURRENT_DATE )
durch das, was Du umgestellt hast (CASE ... END AS "Alter")

Gruß Barlee
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Altersberechnug

Beitrag von Barlee »

Hallo Tino,

Danke für die Rückmeldung.
Freut mich, wenn ich helfen konnte.

Gruß Barlee
Antworten