Sintak Query Tanggal pada MySQL (menghitung umur)

Date/Tanggal merupakan salah satu type data yang sangat penting dalam Database, namun kebanyakan para progammer pemula menghidari type data ini, alasannya adalah karena SUSAH untuk dibuat interface (padahal sebenarnya nilai validasinya jauh lebih penting)

Dalam database mysql, tanggal ditampilkan dalam Format yyyy-mm-dd (misal 2009-01-01, untuk 1 Januari 2009).Sehingga format tersebut terkadang kurang nyaman untuk user()…  nah bagaimana menyikapi hal ini agar format tanggal dapat tersaji dengan format yg biasa kita temui…yaitu 01-01-2009 untuk 1 Januari 2009…

Jika kita mempunyai suatu tabel, misal tbl_mhs dengan kolom sebagai berikut


1:
2:
3:
4:
5:
6:
7:
8:
9:

mysql> select * from tbl_mhs;
+-----------+-------+----------+---------+------+------------+
| nim       | nama  | alamat   | jurusan | JK   | tgl_lahir  |
+-----------+-------+----------+---------+------+------------+
| TI7208001 | SANTI | KLATEN   | 01      | P    | 2008-12-17 |
| TI7208002 | RYAN  | SOLO     | 02      | L    | 2008-08-11 |
| TI7208003 | ANDRI | BOYOLALI | 01      | L    | 2008-07-08 |
+-----------+-------+----------+---------+------+------------+
3 rows in set (0.00 sec)

Jika kita ingin menampilkan dalam format dd-mm-yyyy dapat digunakan perintah seperti di bawah ini:


1:
2:
3:
4:
5:
6:
7:
8:
9:

mysql> select nim,nama,alamat,
date_format(tgl_lahir,'%d-%m-%Y') tgl_lahir from tbl_mhs;
+-----------+-------+----------+-----------------------------------+
| nim       | nama  | alamat   | tgl_lahir |
+-----------+-------+----------+-----------------------------------+
| TI7208001 | SANTI | KLATEN   | 17-01-2008|
| TI7208002 | RYAN  | SOLO     | 11-08-2008|
| TI7208003 | ANDRI | BOYOLALI | 08-07-2008|
+-----------+-------+----------+-----------------------------------+
3 rows in set (0.00 sec)

OK… data tanggal lahir sudah tersaji dengan baik…

Nah.. selanjutnya dalam MySQL kita dapat mengambil nilai tahun atau bulan saja pada field yg bertipe date, Caranya dengan menggunakan perintah


1:
2:
3:
4:
5:
6:
7:

mysql> select MONTH(curdate()) BULAN;
+-------+
| BULAN |
+-------+
|     3 |
+-------+
1 row in set (0.00 sec)

Artinya adalah

  1. Curdate merupakan fungsi untuk mengambil tanggal sekarang
  2. Month digunakan untuk menampilkan bulan pada suatu tangga, sedangk untuk mengambil tahun dapat digunakan function Year

Dari function ini kita dapat menghitung umur pembulatan seseorang dengan cara  sebagai berikut


1:
2:
3:
4:
5:
6:
7:
8:
9:
10:

mysql> select nim,nama,alamat,tgl_lahir,
(year(curdate())-year(tgl_lahir)) as umur FROM tbl_mhs;
+-----------+-------+----------+------------+------+
| nim       | nama  | alamat   | tgl_lahir  | umur |
+-----------+-------+----------+------------+------+
| TI7208001 | SANTI | KLATEN   | 2008-12-17 |    1 |
| TI7208002 | RYAN  | SOLO     | 2008-08-11 |    1 |
| TI7208003 | ANDRI | BOYOLALI | 2008-07-08 |    1 |
+-----------+-------+----------+------------+------+
3 rows in set (0.02 sec)

Ingat cara ini akan membulatkan umur… jadi jika misal sekarang 01 januari 2009, tanggal lahirnya 20 Desember 2008 akan tetap dihitung 1 Tahun

17 Responses to “Sintak Query Tanggal pada MySQL (menghitung umur)

  • wah klo kayak gitu, berarti gak valid donk datanya???
    masa baru umur 1 hr udah terhitung 1 tahun??? ^_^

  • Untuk mendapatkan selisih tahun sintaknya benar mas… tapi untuk mendapatkan selisih hari memang salah…
    Berikut SQL untuk menghitung Selisih hari
    SELECT TO_DAYS(now()) – TO_DAYS(tgl_lahir) from tbl_mhs;

    atau

    SELECT DATEDIFF(now(),tgl_lahir) from tbl_mhs;

  • makasih atas infonya.

  • trims infonya..
    bermanfaat sekali ni
    mampir bos..

  • apriyana
    7 years ago

    sangat membantu…tanks

  • vierm_186
    6 years ago

    saya ingin menanyakan tadi kan mengambil nilai dari bulan, ex. “select month(now())” nah sekarang klo mengambil bulan dari nilai gimana mas,,. ex.. “bulan ke 5 adalah mei”
    terimakasih,,

  • mas-mas semua ikut nimbrung
    kl semisal contoh kasus seperti ini bagaimana mohon petunjuk :
    umur banyak
    1<4 th 80
    4<10 th 70
    mohon bantuan

  • mantapppp gan…..

  • wah, mantap gan. pas bener sama yang aku butuhin sekarang. thanks ya

  • @vierm_186: Gunakan select date_format()
    @samsul: untuk menghitung aggregat silakan gunakan sintak group by utk kasus tsb, sekilas bisa disolusikan dengan perintah Union yaitu
    select “1=1 and umur <4
    union
    Select “4=4 and umur <10

    @freddo &yanuar: Thx

  • Kalo pengen nyari usianya 20 tahun, 2 bulan, 2 hari gmn yak.?

  • mucliis
    6 years ago

    buat mas-masnya n mbak-mbaknya apakah mysql bisa untuk membuat store prosedure and function and triger kalau bisa bagaimana yaaa contoh sintax nya

  • Store Procedure dapat digunakan dalam versi 5.02 ke atas [cmiiw]. Biasanya digunakan untuk memanipulasi tampilan query.

    Sedang trigger biasnaya digunakan untuk memicu suatu pekerjaan misal, mendelete record di tabel B ketika record di Tabel A dihapus sintaknya dapat diletakkan di Fire On Delete pada tabel A yi sbb:
    Delete tabel_B where id=OLD.id

    atau jika ingin memasukkan record baru di tabel B ketika tabel A diinsert
    Letak Trigger di Fire On Insert tabel A yi sbb
    Insert Tabel_B (id) values (NEW.id)

    kira-kira seperti itu

  • mohon bantuannya KK,, gmn klo menampilkan umurnya yg kurang dari 20 tahun. sedangkan datanya banyak ada yang lebih dr 20 thn..

  • coba kalau
    select nama,tanggal_lahir from tbl_anggota where (year(now())-year(tanggal_lahir) <20

  • saiful anwar
    6 years ago

    kalau menghitung umur dengan delphi bagaimana mas

  • bagus banget artikelnya.. membantu banget buat menyelesaikan tugas kuliahku.. makasih ya win~

Leave a Reply

Your email address will not be published. Required fields are marked *


*

Skip to toolbar