Das Alter einer Person

In Ergänzung zu diesem Beitrag kann man auch folgende Alternativen zur Bestimmung des Alters einer Person verwenden:

...

DECLARE @geburtstag DATETIME
SET @geburtstag = '23.07.1968'

Alternative 1:

 SELECT 
 DATEDIFF(yy, @geburtstag, GETDATE()) -
  CASE 
   WHEN (MONTH(GETDATE()) * 100 + DAY(GETDATE())) <
    (MONTH(@geburtstag)* 100 + DAY(@geburtstag))
   THEN 1 
   ELSE 0 
  END
            
----------- 
35

(1 row(s) affected)

Alternative 2:

SELECT 
 (CAST(CONVERT(CHAR(8),GETDATE(), 112) AS INT)
 - 
 CAST(CONVERT(CHAR(8), @geburtstag, 112) AS INT))/10000
            
----------- 
35

(1 row(s) affected)

Alternative 3:

SELECT 
 YEAR(GETDATE()) - YEAR(@geburtstag) -
 (CASE 
  WHEN (MONTH(@geburtstag) > MONTH(GETDATE()))
   OR (MONTH(@geburtstag) = MONTH(GETDATE())
   AND DAY(@geburtstag) > DAY(GETDATE()))
  THEN 1
  ELSE 0 END)
            
----------- 
35

(1 row(s) affected)

Alternative 4:

SELECT 
 (0+CONVERT(CHAR(8),CURRENT_TIMESTAMP, 112)
 - 
 CONVERT(CHAR(8), @geburtstag, 112))/10000
            
----------- 
35

(1 row(s) affected)

Ich würde aber diese Methode vorziehen, da ich ihr eine bessere Performance zutraue.

Noch kein Feedback
Einen Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.
SchlechtExzellent
(Zeilenumbrüche werden zu <br />)
(For my next comment on this site)
(Allow users to contact me through a message form -- Your email will not be revealed!)
Trackback-Adresse für diesen Eintrag

http://www.insidesql.org/blogs/htsrv/trackback.php?tb_id=1113