Menghitung umur .....,
Ada dua parameter, tanggal lahir dan tanggal sekarang (now() or date())
Intinya ada diperhitungan bulan, sepertinya datediff dengan parameter "m"
adalah jawabannya, tapi tunggu dulu.
Kita ambil contoh tanggal lahir 15 Januari 2008.
Pada tanggal 1 Februari 2008, berapa umurnya ? sebulan ? belum kan ? karena
belum sampe tanggal 15. Hitungan sebulan nanti kalau tanggal 15 ke atas.
Jadi kita perlu parameter perbandingan tanggalnya. Kalau tgl lahir (angka
tanggalnya saja) kurang dari tgl sekarang, berarti hasil datediff di atas
harus dikurangi dengan satu. Jadilah fungsi:
Function JumlahBulan(tglMulai As Date, tglAkhir As Date) As Integer
Dim numBln As Integer
numBln = DateDiff("m", tglMulai, tglAkhir)
If Day(tglMulai) < Day(tglAkhir) Then
numBln = numBln - 1
End If
JumlahBulan = numBln
End Function
Fungsi di atas akan memberikan kita total bulan sejak tanggal lahir sampai
sekarang. Memecahnya menjadi tahun dan bulan sangat mudah:
Jumlah tahun = JumlahBulan \ 12 ---> (pembagian integer, hanya nilai
integer di ambil, pecahan di buang)
Jumlah bulan = JumlahBulan mod 12 ---> (modulus, sisa dari pembagian 12,
pecahannya yang diambil tapi bulat lo ya)
Sekarang bagaimana dengan jumlah hari sisanya ?
Dengan contoh di atas, tanggal lahir 15 Januari 2008, kalau kita cek di
tanggal 25 Maret 2008, kan mudah, 15 Januari ke 15 Maret ada 2 bulan, terus
15 Maret ke 25 Maret ada 10 hari.
|<---10--->|
+---------------o---------------+---------------+---------------+
---------------+----------o-----+
1/1 15/1
1/2 15/2 1/3 15/3 25/4 1/4
Sekarang bagaimana kalau ngecek di tanggal 10 Maret 2008 ?
Yup betul, karena belum sampai tanggal 15, maka ngitungnya dari 15 Januari
sampai 15 Pebruari ada 1 bulan, dan dari 15 Pebruari ke 10 Maret ada
sejumlah datediff("d",tglLahir sebulan lalu, tglSekarang).
|<---------24--------->|
+---------------o---------------+---------------+---------------+
------o--------+----------------+
1/1 15/1
1/2 15/2 1/3 10/3 15/3 1/4
Kita bisa bikin fungsi berikut :
Function JumlahHari(tglMulai As Date, tglAkhir As Date) As Integer
Dim tgMulai
tgMulai = DateSerial(Year(tglAkhir), Month(tglAkhir), Day(tglMulai))
If Day(tgMulai) > Day(tglAkhir) Then
tgMulai = DateAdd("m", -1, tgMulai)
End If
JumlahHari = DateDiff("d", tgMulai, tglAkhir)
End Function
Eitt...
Masih ada tapinya, bagaimana untuk kasus yang belum sebulan ? contohnya di
cek pada tanggal 10/2-2008.
Ah mana ada sih pak pegawai masuk umur belum sebulan ?
Tapi bagaimana kalau mau menghitung anak pegawai tersebut ? mungkin saja
bukan ?
Nah bagaiamana caranya ?
Siapa yang bisa ?
|<---------26--------->|
+---------------o---------------+------o--------+---------------+
---------------+----------------+
1/1 15/1 1/2 10/2 15/2 1/3
15/3 1/4
Kalau sudah bisa, maka bentuk query ini bisa menjawab pertanyaan berapa umur
seorang pegawai dalam tahun - bulan - hari:
SELECT
Table1.Nama, Table1.NIK, Table1.TanggalLahir,
Date() AS TanggalSekarang,
JumlahBulan([TanggalLahir],Now()) AS TotBulan,
[TotBulan]\12 AS JumTahun, [TotBulan] Mod 12 AS JumBulan,
JumlahHari([TanggalLahir],[TanggalSekarang]) AS JumHari
FROM Table1;
Aksan Kurdin
On 5/8/08, Darsono <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Sdr. Herry
>
> Mungkin ini bisa sebagai contoh dasar .....
>
> untuk suhu-suhu yang lain,
> mohon koreksi kalau masih kurang tepat
>
> darsono
>
> --- Harry siswanto <[EMAIL PROTECTED]> wrote:
>
> > dear senior...
> >
> > (Pernah tahu tapi lupa)...:-) :-)
> >
> > Bagaimana bentuk di Query / scriptnya
> > untuk mencari Umur seseorang
> > dengan: tanggal sekarang / Now() - tanggalLahir
> > sehingga ketemu:
> > ..... th
> > ...... Bulan
> > .... hari
> >
> > Terima kasih sebelumnya..
> >
> >
> > regards
> > harry
> >
>
> __________________________________________________________
> Joint with us, you will earn some cash when you make some disscusion
> http://www.mylot.com/?ref=darsono72
> __________________________________________________________
>
> Atau yang ini saya yakin anda tertarik
> http://www.UangGampang.Com/?id=darsono72
> __________________________________________________________
>
>
> __________________________________________________________
> Be a better friend, newshound, and
> know-it-all with Yahoo! Mobile. Try it now.
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
>
--
Aksan Kurdin