Sabtu, 31 Desember 2011

Menghitung Umur (ms sql)

Beda dgn di ms acces yg tinggal ketik : "select [tglawal]-[tglakhir] as umur from gatel"

tp klo query diatas dicoba di ms sql server tentu akan beda hasil nya

nie da fungsi buat ngitung umur di ms sql server:

==============================================================
CREATE FUNCTION GetUmur  (@DateOfBirth datetime, @DateNow datetime)
RETURNS varchar(20)
AS
BEGIN
   DECLARE @BirthTahun int, @BirthBulan int, @BirthHari int
   DECLARE @NowTahun int, @NowBulan int, @NowHari int
   DECLARE @AgeTahun int, @AgeBulan int, @AgeHari int
   DECLARE @Umur Varchar(20)

   --Tanggal Lahir
   SET @BirthTahun = DatePart(yy, @DateOfBirth)
   SET @BirthBulan = DatePart(m, @DateOfBirth)
   SET @BirthHari = DatePart(d, @DateOfBirth)

   --Tanggal Sekarang
   SET @NowTahun = DatePart(yy, @DateNow)
   SET @NowBulan = DatePart(m, @DateNow)
   SET @NowHari = DatePart(d, @DateNow)

   --Umur
   If @BirthBulan > @NowBulan
   BEGIN
      SET @AgeTahun =  @NowTahun - @BirthTahun - 1
      SET @NowBulan = @NowBulan + 12
   END
   ELSE
      SET @AgeTahun =  @NowTahun - @BirthTahun

   IF  @BirthHari > @NowHari
   BEGIN
       SET @AgeBulan = @NowBulan - @BirthBulan -1
       SET @NowHari = @NowHari + 30
   END
   ELSE
      SET @AgeBulan = @NowBulan - @BirthBulan

   SET @AgeHari = @NowHari - @BirthHari

   SET @Umur = ''
   IF @AgeTahun > 0
       SET @Umur = @Umur + RTrim(Cast(@AgeTahun As Char(2))) + 'Th '

   IF @AgeBulan > 0
       SET @Umur = @Umur + Rtrim(Cast(@AgeBulan As Char(2))) + 'Bln '

   IF @AgeHari > 0
       SET @Umur = @Umur +  RTrim(Cast(@AgeHari As Char(2))) + 'Hr'

   RETURN(@Umur)
END


====================================
klo mau manggil tinggal ketik query:
 Select dbo.GetUmur(@TanggalLahir, GetDate()) As Umur
========================================

Tidak ada komentar:

Posting Komentar