Alper ÇELİK

Bilgisayar Mühendisi

Yaş hesaplayan Fonksiyon Kodu

CREATE FUNCTION fnComputeAge  
(
@CalculateAge datetime
)
RETURNS nvarchar(50)
AS
BEGIN
DECLARE @tempdate datetime, @years int, @months int, @days int
 
SELECT @tempdate=@CalculateAge
 
SELECT @years = DATEDIFF(YEAR, @tempdate, GETDATE())
-CASE WHEN (MONTH(@CalculateAge)> MONTH(GETDATE()))
OR (MONTH(@CalculateAge)=MONTH(GETDATE()) and DAY(@CalculateAge)> DAY(GETDATE()))
THEN 1 ELSE 0
END
 
SELECT @tempdate = DATEADD(YEAR, @years, @tempdate)
SELECT @months = DATEDIFF (MONTH, @tempdate, GETDATE())  
- CASE WHEN DAY(@CalculateAge) > DAY(GETDATE())
THEN 1 ELSE 0
END
 
SELECT @tempdate= DATEADD(MONTH, @months, @tempdate)
SELECT @days= DATEDIFF(DAY, @tempdate, GETDATE())
 
DECLARE @Age nvarchar(50)
SET @Age = CAST( @years AS nvarchar(4)) + ' Years ' +CAST( @months AS nvarchar(2))+  
' Months '+cast(@days AS nvarchar(2))+' Days Old '
RETURN @Age
END
 
 
Yukarıdaki kodu localinizde çalıştırdıktan sonra yaş hesaplanması gereken kolon üzerinde denemesini yapabilirsiniz. Örneğin Northwind>Employees tablosunda deneyecek olursak:
 
SELECT FirstName, LastName, dbo.fnComputeAge(BirthDate) as Age  
FROM Employees  
 
YA DA  
 
CREATE FUNCTION CalculateAge (@DOB DATE)
RETURNS INT
AS
BEGIN
DECLARE @age INT
SET @age= DATEDIFF(YEAR, @dob, GETDATE()) -
CASE
WHEN (MONTH(@dob)>MONTH(GETDATE())) OR
(MONTH(@dob)=MONTH(GETDATE()) AND DAY(@dob)>DAY(GETDATE()))
THEN 1  
ELSE 0  
END
RETURN @age
END  
 
Unutulmaması gereken bir husus varki o'da fonksiyonu çağırırken db owner'ı fonksiyonun başında belirtmelisiniz..  
 
 
Hepinize iyi çalışmalar dilerim.
 
 
 
 
 
 
 
 
 

Trigger Serisinin İlk Bölümüne Buradan Ulaşabilirsin

Trigger'lar özelleşmiş bir tür stored prosedürlerdir(SP).