Yaş hesaplayan Fonksiyon Kodu
10 Aralık 2016 Cumartesi
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.