Seite 1 von 1

[gelöst] Alter berechnen mit datediff und MySQL

Verfasst: Di 19. Jan 2016, 21:44
von hinti
Hallo!

Base ist mit einer Mysql-Datebank verbunden. Die Datums-Funktion datediff dürfte bei Base einen anderen Syntax haben, als bei Mysql.
Im LO Handbuch steht:

Code: Alles auswählen

DATEDIFF(string, datetime1, datetime2)
und in der MySQL-Referenz:

Code: Alles auswählen

DATEDIFF(expr1,expr2)
Ich möchte gerne das Lebensalter der Vereinsmitglieder berechnen - in Jahren natürlich. Die Abfrage wie im Buch

Code: Alles auswählen

SELECT DATEDIFF('yy',"Geburtsdatum",CURDATE()) AS "Alter" FROM  "Person"
kann ich nur mit der HSQLDB von LO ausführen. Mit MySQL geht es nur ohne Datumsformat, ansonsten bekomme ich den Fehler
Incorrect paramater count in the call to native function 'DATEDIFF'

Wie bekomme ich das mit MySQL hin?

Re: Alter berechnen mit datediff und MySQL

Verfasst: Mi 20. Jan 2016, 08:02
von gogo
... indem Du (wie in der Fehlermedlung angedeutet) den überflüssigen Parameter weglässt (und die anderen zwei vertauschst, sonst kriegst Du eine negative Zahl):

Code: Alles auswählen

DATEDIFF(CURDATE(), `Geburtsdatum`)
Das Alter in Jahren sieht dann so aus

Code: Alles auswählen

date_format(from_Days(DATEDIFF(CURDATE(), `Geburtsdatum`)),'%Y') AS `Alter`
Cave: DATEDIFF rechnet immer mit Date-Werten, nie mit Datetime, daher: Am 30. Geurtstag ist die Person nach obiger Berechnung noch immer 29 Jahre, die 30 kommen erst am Tag danach.
Das kann man mit der Addition von 1 (vor dem from_days()) verhindern:

Code: Alles auswählen

date_format(from_Days(DATEDIFF(CURDATE(), `Geburtsdatum`)+1) ,'%Y') AS `Alter`

Re: Alter berechnen mit datediff und MySQL

Verfasst: Do 21. Jan 2016, 13:46
von hinti
Danke so klappt's.

Lg.