Senin, 31 Oktober 2011

Fungsi Menghitung Umur Di Sql Server

Ini adalah fungsi untuk mengkalkulasi umur seseorang berapa... tinggal dipakai saja sich... daripada kita melakukan kalkulasi umur seseorang di dalam Crystal Report dengan susah payah... lebih baik kita lakukan lewat sql saja... :D

create function dbo.F_AGE_YYYY_MM_DD
(
@START_DATE datetime,
@END_DATE datetime
)
returns varchar(10)
as
begin
declare @AGE varchar(10)
declare @AGE_IN_YEARS int
declare @AGE_IN_MONTHS int
declare @AGE_IN_DAYS int
– Return null if @START_DATE > @END_DATE
if @START_DATE > @END_DATE begin return @AGE end
select
@AGE_IN_YEARS = AGE_IN_YEARS,
@AGE_IN_MONTHS = AGE_IN_MONTHS,
@AGE_IN_DAYS =
datediff(dd,
dateadd(mm,AGE_IN_MONTHS,
dateadd(yy,AGE_IN_YEARS,START_DATE))
,END_DATE)
from
(
select
AGE_IN_MONTHS =
case
when AnniversaryThisMonth <= END_DATE
then datediff(mm,dateadd(yy,AGE_IN_YEARS,START_DATE),END_DATE)
else datediff(mm,dateadd(yy,AGE_IN_YEARS,START_DATE),END_DATE)-1
end,
*
from
(
select
AGE_IN_YEARS =
case
when AnniversaryThisYear <= END_DATE
then datediff(yy,START_DATE,END_DATE)
else datediff(yy,START_DATE,END_DATE)-1
end,
*
from
(
select
AnniversaryThisYear =
dateadd(yy,datediff(yy,START_DATE,END_DATE),START_DATE),
AnniversaryThisMonth =
dateadd(mm,datediff(mm,START_DATE,END_DATE),START_DATE),
*
from
(
select START_DATE = dateadd(dd,datediff(dd,0,@START_DATE),0),
END_DATE = dateadd(dd,datediff(dd,0,@END_DATE),0)
) aaaa
) aaa
) aa
) a
select @AGE =
right(’0000′+convert(varchar(4),@AGE_IN_YEARS),4) + ‘ ‘ +
right(’00′+convert(varchar(4),@AGE_IN_MONTHS),2) + ‘ ‘ +
right(’00′+convert(varchar(4),@AGE_IN_DAYS),2)
return @AGE
end
GO
================================
Cara pakenya gini Select dbo.F_AGE_YYYY_MM_DD(Tgl_Lahir, getdate())  From T_Data_Karyawan

Tidak ada komentar:

Posting Komentar