Altersberechnug
Moderator: Moderatoren
-
- Beiträge: 4
- Registriert: Mo, 24.03.2008 08:04
- Wohnort: Haltern am See
Altersberechnug
Hallo,
wie kann ich in einer Base Datenbank das Alter aus dem Geburtsdatum berechnen?
wie kann ich in einer Base Datenbank das Alter aus dem Geburtsdatum berechnen?
MfG
loeschknecht4711
loeschknecht4711
Re: Altersberechnug
Hallo loeschknecht,
das ist ganz einfach:
Gruß Barlee
das ist ganz einfach:
Code: Alles auswählen
SELECT
"[Spalte_mit_Geburtsdatum]",
DATEDIFF('yy', "[Spalte_mit_Geburtsdatum]",CURRENT_DATE) as "Alter"
from "[Deine_Tabelle]"
-
- Beiträge: 4
- Registriert: Mo, 24.03.2008 08:04
- Wohnort: Haltern am See
Re: Altersberechnug
Hallo Barlee,
vielen Dank für Deine schnelle Reaktion. Es funktioniert aber leider nicht. Hast Du noch eine Idee?
Gruß
Löschknecht
vielen Dank für Deine schnelle Reaktion. Es funktioniert aber leider nicht. Hast Du noch eine Idee?
Gruß
Löschknecht
Re: Altersberechnug
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 ' '
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
Windows 7 home premium SP 1
-
- Beiträge: 4
- Registriert: Mo, 24.03.2008 08:04
- Wohnort: Haltern am See
Re: Altersberechnug
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
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
loeschknecht4711
Re: Altersberechnug
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:
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
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"
...
Falls Du in der Art etwas benötigst, dann melde Dich am besten noch einmal.
Gruß Barlee
Re: Altersberechnug
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
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
Re: Altersberechnug
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
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
Re: Altersberechnug
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:
SQL direkt ausführen aktivieren! Spaltenbezeichner, Tabellennamen und Aliase in Anführungsstriche!
Gruß Barlee
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"
Gruß Barlee
Re: Altersberechnug
Hallo Tino,
ganz einfach!
Du ersetzt DATEDIFF( 'yy', "Geb am", CURRENT_DATE )
durch das, was Du umgestellt hast (CASE ... END AS "Alter")
Gruß Barlee
ganz einfach!
Du ersetzt DATEDIFF( 'yy', "Geb am", CURRENT_DATE )
durch das, was Du umgestellt hast (CASE ... END AS "Alter")
Gruß Barlee
Re: Altersberechnug
Hallo Tino,
Danke für die Rückmeldung.
Freut mich, wenn ich helfen konnte.
Gruß Barlee
Danke für die Rückmeldung.
Freut mich, wenn ich helfen konnte.
Gruß Barlee