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...