🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Altr berechnen, SQL Fehler?
Altr berechnen, SQL Fehler?
Hallo zusammen.
Ich habe eine Personengruppe mit Geburtsdatum. Hier möchte ich das Alter berechnen. Sollte genau sein, da ich nachher in einem Bericht den Altersdurchschnitt berechnen will. Ich habe auf der Seite http://www.computerwissen.de/office/ope ... -base.html sowie im Handbuch nachgeschlagen. Aber irgendwie rechnet die Abfrage nicht. Kann mit jemand den Fehler zeigen?
Danke im vorraus,
Suwo
Ich habe eine Personengruppe mit Geburtsdatum. Hier möchte ich das Alter berechnen. Sollte genau sein, da ich nachher in einem Bericht den Altersdurchschnitt berechnen will. Ich habe auf der Seite http://www.computerwissen.de/office/ope ... -base.html sowie im Handbuch nachgeschlagen. Aber irgendwie rechnet die Abfrage nicht. Kann mit jemand den Fehler zeigen?
Danke im vorraus,
Suwo
- Dateianhänge
-
- Geburtstag_Alter.odb.zip
- (17.34 KiB) 249-mal heruntergeladen
Re: Altr berechnen, SQL Fehler?
Hallo Suwo,
Du hast bei Datediff die Spalte vergessen, die darauf verweist, dass die Differenz der Jahreszahl berechnet werden soll.
geht. Bringt dann aber nur den Unterschied im Datum zwischen z.B. 2014 und 2013 als 1 Jahr.
Jetzt zusammen mit der Version aus dem Handbuch, die auch bei Schaltjahren noch funktioniert:
Gruß
Robert
Du hast bei Datediff die Spalte vergessen, die darauf verweist, dass die Differenz der Jahreszahl berechnet werden soll.
Code: Alles auswählen
DATEDIFF( 'YY',"Geburtstag", CURDATE( ) )
Jetzt zusammen mit der Version aus dem Handbuch, die auch bei Schaltjahren noch funktioniert:
Code: Alles auswählen
SELECT "Name", "Vorname", "Geburtstag", CASE WHEN MONTH( "Geburtstag" ) > MONTH( CURDATE( ) ) THEN DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) - 1 WHEN ( MONTH( "Geburtstag" ) = MONTH( CURDATE( ) ) AND DAY( "Geburtstag" ) > DAY( CURDATE( ) ) ) THEN DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) - 1 ELSE DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) END AS "Alter" FROM "Geburtstag"
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Altr berechnen, SQL Fehler?
Hallo.
'yy' habe ich bewußt weggelassen, weil ich gerne das genaue Alter hätte. Das heißt: Ist jemand am 31.03.2000 geboren ist er so 14 Jahre alt. Genaugenommen aber 14 Jahre und 3 Tage. Eine Kommazahl würde ja genügen. Ich bin davon ausgegangen, dass Base genau wie Calc intern mit ganzen Zahlen rechnet (01.01.2014 wäre dann 41640).
mfg,
Suwo
'yy' habe ich bewußt weggelassen, weil ich gerne das genaue Alter hätte. Das heißt: Ist jemand am 31.03.2000 geboren ist er so 14 Jahre alt. Genaugenommen aber 14 Jahre und 3 Tage. Eine Kommazahl würde ja genügen. Ich bin davon ausgegangen, dass Base genau wie Calc intern mit ganzen Zahlen rechnet (01.01.2014 wäre dann 41640).
mfg,
Suwo
Re: Altr berechnen, SQL Fehler?
Hallo Suwo,
ein Datum wird in Datenbanken nicht als Zahlenwert gespeichert. Es ist direkt ein Zugriff auf Jahr, Monat und Tag möglich. Du kannst natürlich die Differenz in Tagen insgesamt ausrechnen oder die Differenz zum letzten Geburtstag. Dann bliebe nur noch die Unwägbarkeit mit dem Schaltjahr.
Gruß
Robert
ein Datum wird in Datenbanken nicht als Zahlenwert gespeichert. Es ist direkt ein Zugriff auf Jahr, Monat und Tag möglich. Du kannst natürlich die Differenz in Tagen insgesamt ausrechnen oder die Differenz zum letzten Geburtstag. Dann bliebe nur noch die Unwägbarkeit mit dem Schaltjahr.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Alter berechnen, SQL Fehler?
Hallo.
Tappe gerade im Dunkeln. Ich habe eine neue Spalte eingefügt: CURDATE( ) - "Geburtstag". Das klappt aber nicht.
mfg,
Suwo
Tappe gerade im Dunkeln. Ich habe eine neue Spalte eingefügt: CURDATE( ) - "Geburtstag". Das klappt aber nicht.
mfg,
Suwo
Re: Alter berechnen, SQL Fehler?
Hallo Suwo,
DATEDIFF('dd',"Geburtstag",CURDATE()) gibt Dir den Unterschied in Tagen an.
Gruß
Robert
Du versuchst von einem Datum ein anderes zu subtrahieren. Ein Datum wird aber als Datum verwaltet.suwo hat geschrieben: Tappe gerade im Dunkeln. Ich habe eine neue Spalte eingefügt: CURDATE( ) - "Geburtstag". Das klappt aber nicht.
DATEDIFF('dd',"Geburtstag",CURDATE()) gibt Dir den Unterschied in Tagen an.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Altr berechnen, SQL Fehler?
Hallo Suwo,
ich wollte Dir das jetzt nicht vorenthalten:
Die folgende Abfrage gibt für die von Dir vorgelegte Datenbank das Alter in Jahren und die Tage seit dem letzten Geburtstag auf.
Ich löse das Geburtsdatum in seine Bestandteile auf, addiere zu der Jahreszahl das Alter hinzu und mache daraus wieder ein Datum. Dann rechne ich von diesem Datum (dem letzten Geburtstag) die Differenz zu heute in Tagen aus.
Vielleicht geht's auch cleverer - mir ist aber keine andere Lösung auf Anhieb eingefallen.
Gruß
Robert
ich wollte Dir das jetzt nicht vorenthalten:
Die folgende Abfrage gibt für die von Dir vorgelegte Datenbank das Alter in Jahren und die Tage seit dem letzten Geburtstag auf.
Code: Alles auswählen
SELECT "Name",
"Vorname",
"Geburtstag",
CASE WHEN MONTH( "Geburtstag" ) > MONTH( CURDATE( ) ) THEN DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) - 1 WHEN ( MONTH( "Geburtstag" ) = MONTH( CURDATE( ) ) AND DAY( "Geburtstag" ) > DAY( CURDATE( ) ) ) THEN DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) - 1 ELSE DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) END AS "Alter",
DATEDIFF('dd',CONVERT( YEAR("Geburtstag")+CASE WHEN MONTH( "Geburtstag" ) > MONTH( CURDATE( ) ) THEN DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) - 1 WHEN ( MONTH( "Geburtstag" ) = MONTH( CURDATE( ) ) AND DAY( "Geburtstag" ) > DAY( CURDATE( ) ) ) THEN DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) - 1 ELSE DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) END||'-'||RIGHT('0'||MONTH("Geburtstag"),2)||'-'||RIGHT('0'||DAY("Geburtstag"),2), DATE),CURDATE()) AS "Tage_seit_letztem_Geburtstag"
FROM "Geburtstag"
Vielleicht geht's auch cleverer - mir ist aber keine andere Lösung auf Anhieb eingefallen.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Altr berechnen, SQL Fehler?
Hallo.
Vielen Dank für die Hinweise. Im Handbuch habe ich nur auf Seite 248 das Bsp. gefunden. Auf 'dd' wäre ich von alleine nicht gekommen, oder habe ich da etwas im Handbuch übersehen?
Ich hoffe, ich komme damit weiter (Alter ausrechnen und dann den Altersdurchschnitt einer Gruppe in einem Bericht auswerfen). Wenn nicht, muss ich wohl wieder mal fragen.
Mfg,
Suwo
Vielen Dank für die Hinweise. Im Handbuch habe ich nur auf Seite 248 das Bsp. gefunden. Auf 'dd' wäre ich von alleine nicht gekommen, oder habe ich da etwas im Handbuch übersehen?
Ich hoffe, ich komme damit weiter (Alter ausrechnen und dann den Altersdurchschnitt einer Gruppe in einem Bericht auswerfen). Wenn nicht, muss ich wohl wieder mal fragen.

Mfg,
Suwo
Re: Altr berechnen, SQL Fehler?
Hallo Suwo,
Vermutlich wären hier Verweise an den entsprechenden Stellen angebracht ...
Gruß
Robert
Ich weiß einige Funktionen auch nicht aus dem Kopf. Deswegen gibt es im Handbuch den Anhang mit allen Funktionen zur HSQLDB. DATEDIFF ist natürlich auch dabei mit allen Parametern.suwo hat geschrieben:Im Handbuch habe ich nur auf Seite 248 das Bsp. gefunden. Auf 'dd' wäre ich von alleine nicht gekommen, oder habe ich da etwas im Handbuch übersehen?
Vermutlich wären hier Verweise an den entsprechenden Stellen angebracht ...
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.