Sunday, 11 March 2012
#8 Menghitung umur dengan sql


Berikut script sederhana untuk menghitung umur dengan sql
untuk menjalankan hasilnya caranya sangat mudah yaitu:
create function [dbo].[umur](@tanggallahir datetime, @tipe as tinyint)
RETURNS varchar(100)
with ENCRYPTION
--select dbo.umur('12/17/1982', 1)
AS
Begin
DECLARE @thisYearBirthDay datetime
DECLARE @years int, @months int, @days int
Declare @hasil as varchar(30)
set @thisYearBirthDay = DATEADD(year, DATEDIFF(year, @tanggallahir, getdate()), @tanggallahir)
set @years = DATEDIFF(year, @tanggallahir, getdate()) - (CASE WHEN @thisYearBirthDay > getdate() THEN 1 ELSE 0 END)
set @months = MONTH(getdate() - @thisYearBirthDay) - 1
set @days = DAY(getdate() - @thisYearBirthDay) - 1
if @tipe=1--full
begin
set @hasil = cast(@years as varchar(2)) + ' tahun, ' + cast(@months as varchar(2)) + ' bulan, ' + cast(@days as varchar(3)) + ' hari'
end
else if @tipe=2--Tahun bulan
begin
set @hasil = cast(@years as varchar(2)) + ' tahun, ' + cast(@months as varchar(2)) + ' bulan'
end
else if @tipe=3--Tahun aja
begin
set @hasil = cast(@years as varchar(2))
end
else if @tipe=4--bulan aja
begin
set @hasil = cast(@months as varchar(2))
end
else if @tipe=5--hari aja
begin
set @hasil = cast(@days as varchar(3))
end
return @hasil
end
RETURNS varchar(100)
with ENCRYPTION
--select dbo.umur('12/17/1982', 1)
AS
Begin
DECLARE @thisYearBirthDay datetime
DECLARE @years int, @months int, @days int
Declare @hasil as varchar(30)
set @thisYearBirthDay = DATEADD(year, DATEDIFF(year, @tanggallahir, getdate()), @tanggallahir)
set @years = DATEDIFF(year, @tanggallahir, getdate()) - (CASE WHEN @thisYearBirthDay > getdate() THEN 1 ELSE 0 END)
set @months = MONTH(getdate() - @thisYearBirthDay) - 1
set @days = DAY(getdate() - @thisYearBirthDay) - 1
if @tipe=1--full
begin
set @hasil = cast(@years as varchar(2)) + ' tahun, ' + cast(@months as varchar(2)) + ' bulan, ' + cast(@days as varchar(3)) + ' hari'
end
else if @tipe=2--Tahun bulan
begin
set @hasil = cast(@years as varchar(2)) + ' tahun, ' + cast(@months as varchar(2)) + ' bulan'
end
else if @tipe=3--Tahun aja
begin
set @hasil = cast(@years as varchar(2))
end
else if @tipe=4--bulan aja
begin
set @hasil = cast(@months as varchar(2))
end
else if @tipe=5--hari aja
begin
set @hasil = cast(@days as varchar(3))
end
return @hasil
end
untuk menjalankan hasilnya caranya sangat mudah yaitu:
select birthdate, dbo.umur(birthdate,1) umur from employees where birthdate is not null
Subscribe to:
Post Comments (Atom)
2 comments:
select trunc(months_between(sysdate,dob)/12) year,
trunc(mod(months_between(sysdate,dob),12)) month,
trunc(sysdate-add_months(dob,trunc(months_between(sysdate,dob)/12)*12+trunc(mod(months_between(sysdate,dob),12)))) day
from (Select to_date('26042013','DDMMYYYY') dob from dual);
mantap boss...
Post a Comment