Menghitung Usia Dengan Akurat - MySQL Dasar #26
Daftar Isi [ Tanggal dan Waktu – MySQL Dasar #14 ]
Dalam MySQL/MariaDB Anda bisa menghitung sebuah nilai usia seseorang dari sebuah string tanggal secara akurat. Secara sederhana untuk menghitung usia kita hanya melakukan operasi pengurangan (tanggal sekarang - tanggal lahir = usia) tetapi itu masih belum akurat terutama ketika bulan/tanggal sekarang belum lebih besar dari bulan/tanggal lahir
Demonstrasi sederhana bagaimana menghitung nilai umur seseorang dari sebuah variabel temporer yang berisi string tanggal
MariaDB [root93]> SELECT @sekarang, @lahir, YEAR(@sekarang)-YEAR(@lahir)-IF(RIGHT('@sekarang',5)<RIGHT('@lahir',5),1,0) AS usia,
-> MID(@sekarang,6,2) AS 'Bulan Sekarang', MID(@lahir,6,2) AS 'Bulan Lahir',
-> MID(@sekarang,6,2)-MID(@lahir,6,2) AS 'Rentang Bulan';
+------------+------------+------+----------------+-------------+---------------+
| @sekarang | @lahir | usia | Bulan Sekarang | Bulan Lahir | Rentang Bulan |
+------------+------------+------+----------------+-------------+---------------+
| 2022-05-11 | 1993-07-30 | 28 | 05 | 07 | -2 |
+------------+------------+------+----------------+-------------+---------------+
1 row in set (0.00 sec)
Selanjutnya formula diatas perlu dicoba dengan terlebih dahulu membuah sebuah tabel teman seperti berikut ini
MariaDB [root93]> CREATE TABLsE teman(nama VARCHAR(30), lahir DATE);
Query OK, 0 rows affected (0.69 sec)
MariaDB [root93]> INSERT INTO teman (nama, lahir) VALUES('Adi','1994-02-01');
Query OK, 1 row affected (0.09 sec)
MariaDB [root93]> INSERT INTO teman (nama, lahir) VALUES('Nanang','1995-07-11');
Query OK, 1 row affected (0.08 sec)
MariaDB [root93]> INSERT INTO teman (nama, lahir) VALUES('Wawan','1991-05-12');
Query OK, 1 row affected (0.03 sec)
MariaDB [root93]> INSERT INTO teman (nama, lahir) VALUES('Ani','1993-08-12');
Query OK, 1 row affected (0.08 sec)
Selanjutnya Anda bisa menghitung nilai usia pada tabel teman diatas dengan parameter seperti berikut
MariaDB [root93]> SELECT nama, lahir, CURDATE() AS 'Tanggal Sekarang', YEAR(CURDATE())-YEAR(lahir)
-> -IF(RIGHT('CURDATE()',5)<RIGHT('lahir',5),1,0) AS umur FROM teman;
+--------+------------+------------------+------+
| nama | lahir | Tanggal Sekarang | umur |
+--------+------------+------------------+------+
| Adi | 1994-02-01 | 2022-05-11 | 27 |
| Nanang | 1995-07-11 | 2022-05-11 | 26 |
| Wawan | 1991-05-12 | 2022-05-11 | 30 |
| Ani | 1993-08-12 | 2022-05-11 | 28 |
+--------+------------+------------------+------+
4 rows in set (0.00 sec)
Kemudian misalnya Anda ingin membandingkan antara suatu string tanggal untuk mencari perbedaaan antara satu dengan yang lainnya. Misalnya disini kita ingin mengetahui berapa umur 3 orang teman lainnya ketika Nanang dilahirkan
MariaDB [root93]> select nama, lahir, '1995-07-11' AS 'Tanggal Lahir Nanang',
-> YEAR('1995-07-11')-YEAR(lahir)
-> -IF(RIGHT('1995-07-11',5) < RIGHT('lahir',5),1,0) AS 'Usia' FROM teman WHERE nama !='Nanang';
+-------+------------+----------------------+------+
| nama | lahir | Tanggal Lahir Nanang | Usia |
+-------+------------+----------------------+------+
| Adi | 1994-02-01 | 1995-07-11 | 0 |
| Wawan | 1991-05-12 | 1995-07-11 | 3 |
| Ani | 1993-08-12 | 1995-07-11 | 1 |
+-------+------------+----------------------+------+
3 rows in set (0.00 sec)
Menghitung usia dalam satuan bulan
MariaDB [root93]> SELECT nama, lahir, CURDATE() AS 'Hari ini',
-> (YEAR(CURDATE())-YEAR(lahir)) * 12 - IF(MONTH(CURDATE()) < MONTH(lahir),1,0) AS 'Usia Dalam Bulan' FROM teman
+--------+------------+------------+------------------+
| nama | lahir | Hari ini | Usia Dalam Bulan |
+--------+------------+------------+------------------+
| Adi | 1994-02-01 | 2022-05-13 | 336 |
| Nanang | 1995-07-11 | 2022-05-13 | 323 |
| Wawan | 1991-05-12 | 2022-05-13 | 372 |
| Ani | 1993-08-12 | 2022-05-13 | 347 |
+--------+------------+------------+------------------+
4 rows in set (0.00 sec)
Perhitungan menghitung usia dalam satuan bulan diatas masih belum belum akurat, contohnya disana bahwa Ani lahir pada bulan 8 dan bulan sekarang adalah bulan 5, sehingga bukan 347 bulan ataupun 348 bulan, karena masih kurang 3 bulan lagi, sehingga sehingga hitungannya adalah ((tahun sekarang - tahun lahir)) * 12 + ((bulan sekarang - bulan lahir)) - (jika hari ini lebih kecil < dari hari lahir, maka dikurangi 1, tapi jika tidak dikurang 0). Sehingga parameternya akan menjadi seperti berikut
MariaDB [root93]> SELECT nama, lahir, CURDATE() AS 'Hari ini',
-> (YEAR(CURDATE())-YEAR(lahir)) * 12 +(MONTH(CURDATE())-MONTH(lahir))- IF(DAYOFMONTH(CURDATE()) < DAYOFMONTH(lahir),1,0) AS 'Usia Dalam Bulan'
-> FROM teman;
+--------+------------+------------+------------------+
| nama | lahir | Hari ini | Usia Dalam Bulan |
+--------+------------+------------+------------------+
| Adi | 1994-02-01 | 2022-05-13 | 339 |
| Nanang | 1995-07-11 | 2022-05-13 | 322 |
| Wawan | 1991-05-12 | 2022-05-13 | 372 |
| Ani | 1993-08-12 | 2022-05-13 | 345 |
+--------+------------+------------+------------------+
4 rows in set (0.02 sec)
Baca selanjutnya : Menggeser Tanggal dan Waktu - MySQL Dasar #27
0 Response to "Menghitung Usia Dengan Akurat - MySQL Dasar #26"
Post a Comment
Silahkan untuk meninggalkan komentar, santai saja dan mulailah berkomentar...