Delphi-PRAXiS

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

Sir Rufo 22. Apr 2012 11:32

AW: Alter berechnen als Dezimalzahl mit SQL
 
Es gibt auch noch die Funktion Bei Google suchenTIMESTAMPDIFF, die würde ich hierfür hernehmen ;)

Iwo Asnet 22. Apr 2012 11:38

AW: Alter berechnen als Dezimalzahl mit SQL
 
Zitat:

Zitat von DeddyH (Beitrag 1162994)
Und die Schuhgröße der Hebamme :mrgreen: (nun aber genug OT).

Genau genommen müssten wir die jeweilige Ortszeit berücksichtigen, und deshalb Geburtsort und Ort des Fragestellers. Die Schuhgröße der Hebamme ist dann interessant, aber nicht zielführend.
Zitat:

Zitat von omata (Beitrag 1162995)
Mit 365.2425 wird es nicht immer das richtige Ergebnis liefern.
SQL-Code:
SELECT FLOOR(DATEDIFF(now(), geburtstag) / 365)

Wie gehst Du mit Schaltjahren um? Der Quotient 365,2425 versucht es wenigstens.

Ich glaube, das mit den Nachkommastellen geht, in dem man nach dem verlinkten Algorithmus das Alter in ganzen Jahren und dann einfach die Anzahl der Tage zwischen dem letzten Geburtstag und Heute nimmt und ins Verhältnis zu 365 bzw. 365.25 (Schaltjahr des Zieldatums) setzt.

omata 22. Apr 2012 11:50

AW: Alter berechnen als Dezimalzahl mit SQL
 
@Iwo Asnet: Schau dir bitte meinen Link an und lese Edit3 in meinem letzten Post.

Iwo Asnet 22. Apr 2012 14:39

AW: Alter berechnen als Dezimalzahl mit SQL
 
Zitat:

Zitat von omata (Beitrag 1163003)
@Iwo Asnet: Schau dir bitte meinen Link an und lese Edit3 in meinem letzten Post.

Ups, ich hatte folgendes überlesen:
Zitat:

Zitat von omata (Beitrag 1162995)
...
Edit3:
Ups, ich hatte folgendes überlesen...
..Also einfach überlesen, was ich geschrieben habe. Sorry

Also einfach überlesen, was ich geschrieben habe. Sorry.

:stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.

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