Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Alter berechnen als Dezimalzahl mit SQL (https://www.delphipraxis.net/167845-alter-berechnen-als-dezimalzahl-mit-sql.html)

RWarnecke 21. Apr 2012 19:00

Alter berechnen als Dezimalzahl mit SQL
 
Hallo zusammen,

wie berechne ich über SQL das Alter in einer Dezimalzahl. Ein Beispiel :

Geburtsdatum : 29.08.1976
Ergebnis Alter : 35,64

Wie bekomme ich das in einem SQL-Befehl hin unter MySQL-Version: 5.1.61 ?

Mit diesem Befehl habe ich bis jetzt nur das volle Alter herausbekommen. Hier fehlen mir die Kommastellen.
Code:
SELECT FLOOR(PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM NOW()), EXTRACT(YEAR_MONTH FROM BirthdayDate)) / 12)

RWarnecke 21. Apr 2012 19:20

AW: Alter berechnen als Dezimalzahl mit SQL
 
Hallo zusammen,

habe soeben das Problem selber lösen können.

Lösung:
Code:
SELECT ROUND((UNIX_TIMESTAMP( NOW() )-UNIX_TIMESTAMP('1976-08-29 12:00:00'))/(60*60*24*365.2425), 2) as 'ALTER'

mkinzler 21. Apr 2012 19:21

AW: Alter berechnen als Dezimalzahl mit SQL
 
Floor() rundet ja auch ab.

Iwo Asnet 22. Apr 2012 00:13

AW: Alter berechnen als Dezimalzahl mit SQL
 
Kann man nicht einfach CAST, CONVERT o.ä. verwenden?

RWarnecke 22. Apr 2012 07:35

AW: Alter berechnen als Dezimalzahl mit SQL
 
Wenn ich folgendes schreibe :
Code:
SELECT CAST(CURRENT_DATE() AS INTEGER);
Dann hat er ein Problem mit dem "AS INTEGER". Das gleiche passiert auch beim Convert.

Wenn man aber statt FLOOR de Befehl ROUND in den SQL-Befehl aus dem Beitrag #1 einsetzt, bekommt man das gleiche Ergebnis wie aus Beitrag #2.

Iwo Asnet 22. Apr 2012 09:50

AW: Alter berechnen als Dezimalzahl mit SQL
 
Ich würde ja auch nach FLOAT casten. Ich weiss nicht, ob das Standard ist, aber i.a. wird das Datum intern als Fließkommazahl dargestellt, die die Anzahl der Tage seit einem bestimmten Datum (1.1.1900 z.B.) angibt. Der Nachkommaanteil gibt die Zeit an, wobei 0,5 Uhr Mittags ist.

Die Differenz ist dann das Alter in Tagen.

DeddyH 22. Apr 2012 09:55

AW: Alter berechnen als Dezimalzahl mit SQL
 
Und wenn es wirklich genau und somit aussagefähig sein soll, bräuchte man streng genommen auch noch mindestens die Geburtsstunde und könnte keinen festen Faktor zur Berücksichtigung der Schaltjahre verwenden, sondern müsste deren tatsächliche Anzahl im ermittelten Zeitraum bestimmen ;)

Iwo Asnet 22. Apr 2012 10:06

AW: Alter berechnen als Dezimalzahl mit SQL
 
Sowie den Geburtsort und den Ort, an dem die Frage nach dem Alter gestellt wird. :stupid:

DeddyH 22. Apr 2012 10:16

AW: Alter berechnen als Dezimalzahl mit SQL
 
Und die Schuhgröße der Hebamme :mrgreen: (nun aber genug OT).

omata 22. Apr 2012 11:00

AW: Alter berechnen als Dezimalzahl mit SQL
 
Das Thema hatten wir hier ja schonmal.

Edit: Mit 365.2425 wird es nicht immer das richtige Ergebnis liefern.

Edit2: In MySQL gibt es doch DATEDIFF?
SQL-Code:
SELECT FLOOR(DATEDIFF(now(), geburtstag) / 365)


Edit3:
Ups, ich hatte folgendes überlesen...
Zitat:

Zitat von RWarnecke (Beitrag 1162955)
Hier fehlen mir die Kommastellen.

Also einfach überlesen, was ich geschrieben haben. Sorry


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz