Mencari Hari Pertama dan Terakhir pada Bulan Tertentu - MySQL Dasar #28

 Daftar Isi :   Tanggal dan Waktu – MySQL Dasar #14

Jika Anda memiliki sebuah string tanggal dan ingin tahu tanggal pertama atau terakhir pada bulan tersebut, hari pertama atau terakhir bulan berikutnya atau bulan sebelumnya, maka Anda bisa melakukannya dengan cara sebagai berikut :

Mencari tanggal pertama dari bulan saat ini

Rumusnya adalah = nilai tanggal - (nilai tanggal - 1)

MariaDB [root93]> SELECT d AS Tanggal, DATE_SUB(d, INTERVAL DAYOFMONTH(d)-1 DAY) AS 'Tanggal Pertama' FROM tanggal;
+------------+-----------------+
| Tanggal    | Tanggal Pertama |
+------------+-----------------+
| 1980-02-03 | 1980-02-01      |
| 1990-10-12 | 1990-10-01      |
| 2000-12-21 | 2000-12-01      |
| 2012-12-12 | 2012-12-01      |
| 2022-04-24 | 2022-04-01      |
| 2022-04-23 | 2022-04-01      |
| 2022-04-25 | 2022-04-01      |
+------------+-----------------+
7 rows in set (0.00 sec)

Mencari hari pertama dari bulan sebelumnya dan bulan berikutnya

Rumusnya adalah = untuk bulan sebelumnya > nilai tanggal - (nilai tanggal - 1) - (INTERVAL -1 MONTH) / untuk bulan berikutnya > nilai tanggal - (nilai tanggal - 1) + (INTERVAL 1 MONTH)

MariaDB [root93]> SELECT d AS 'Tanggal Awal', DATE_ADD(DATE_SUB(d, INTERVAL DAYOFMONTH(d)-1 DAY), INTERVAL -1 MONTH) AS 'Tgl 1 Bln Sebelumnya',
    -> DATE_ADD(DATE_SUB(d, INTERVAL DAYOFMONTH(d)-1 DAY), INTERVAL 1 MONTH) AS 'Tgl 1 Bln Berikutnya' FROM tanggal;
+--------------+----------------------+----------------------+
| Tanggal Awal | Tgl 1 Bln Sebelumnya | Tgl 1 Bln Berikutnya |
+--------------+----------------------+----------------------+
| 1980-02-03   | 1980-01-01           | 1980-03-01           |
| 1990-10-12   | 1990-09-01           | 1990-11-01           |
| 2000-12-21   | 2000-11-01           | 2001-01-01           |
| 2012-12-12   | 2012-11-01           | 2013-01-01           |
| 2022-04-24   | 2022-03-01           | 2022-05-01           |
| 2022-04-23   | 2022-03-01           | 2022-05-01           |
| 2022-04-25   | 2022-03-01           | 2022-05-01           |
+--------------+----------------------+----------------------+
7 rows in set (0.00 sec)

Mencari hari terkahir dari bulan ini

MariaDB [root93]> SELECT d AS tanggal,
    -> DATE_SUB(DATE_ADD(DATE_SUB(d, INTERVAL DAYOFMONTH(d)-1 DAY), INTERVAL 1 MONTH), INTERVAL 1 DAY) AS 'Tgl Trkhr Bln ini' FROM tanggal;
+------------+-------------------+
| tanggal    | Tgl Trkhr Bln ini |
+------------+-------------------+
| 1980-02-03 | 1980-02-29        |
| 1990-10-12 | 1990-10-31        |
| 2000-12-21 | 2000-12-31        |
| 2012-12-12 | 2012-12-31        |
| 2022-04-24 | 2022-04-30        |
| 2022-04-23 | 2022-04-30        |
| 2022-04-25 | 2022-04-30        |
+------------+-------------------+
7 rows in set (0.00 sec)

Mencari hari terkahir dari bulan sebelumnya

MariaDB [root93]> SELECT d AS tanggal,
    -> DATE_SUB(DATE_ADD(DATE_SUB(d, INTERVAL DAYOFMONTH(d)-1 DAY), INTERVAL 0 MONTH), INTERVAL 1 DAY) AS 'Tgl Terakhir Bln sebelumnya' FROM tanggal;
+------------+----------------------+
| tanggal    | Tgl Trhr Bln sblmnya |
+------------+----------------------+
| 1980-02-03 | 1980-01-31           |
| 1990-10-12 | 1990-09-30           |
| 2000-12-21 | 2000-11-30           |
| 2012-12-12 | 2012-11-30           |
| 2022-04-24 | 2022-03-31           |
| 2022-04-23 | 2022-03-31           |
| 2022-04-25 | 2022-03-31           |
+------------+----------------------+
7 rows in set (0.00 sec)

Mencari hari terkahir dari bulan berikutnya

MariaDB [root93]> SELECT d,
    -> DATE_SUB(DATE_ADD(DATE_SUB(d, INTERVAL DAYOFMONTH(d)-1 DAY), INTERVAL 2 MONTH), INTERVAL 1 DAY) FROM tanggal;
+------------+-------------------------------------------------------------------------------------------------+
| d          | DATE_SUB(DATE_ADD(DATE_SUB(d, INTERVAL DAYOFMONTH(d)-1 DAY), INTERVAL 2 MONTH), INTERVAL 1 DAY) |
+------------+-------------------------------------------------------------------------------------------------+
| 1980-02-03 | 1980-03-31                                                                                      |
| 1990-10-12 | 1990-11-30                                                                                      |
| 2000-12-21 | 2001-01-31                                                                                      |
| 2012-12-12 | 2013-01-31                                                                                      |
| 2022-04-24 | 2022-05-31                                                                                      |
| 2022-04-23 | 2022-05-31                                                                                      |
| 2022-04-25 | 2022-05-31                                                                                      |
+------------+-------------------------------------------------------------------------------------------------+
7 rows in set (0.00 sec)

MariaDB [root93]>

Sebenarnya untuk mencari hari terkahir dari bulan sebelumnya bisa disederhanakan seperti berikut

MariaDB [root93]> SELECT d, DATE_SUB(d, INTERVAL DAYOFMONTH(d) DAY) AS 'Hari terkahir bln sebelumnya' FROM tanggal;
+------------+------------------------------+
| d          | Hari terkahir bln sebelumnya |
+------------+------------------------------+
| 1980-02-03 | 1980-01-31                   |
| 1990-10-12 | 1990-09-30                   |
| 2000-12-21 | 2000-11-30                   |
| 2012-12-12 | 2012-11-30                   |
| 2022-04-24 | 2022-03-31                   |
| 2022-04-23 | 2022-03-31                   |
| 2022-04-25 | 2022-03-31                   |
+------------+------------------------------+
7 rows in set (0.08 sec)

Baca selanjutnya : Menghitung Panjang Bulan - MySQL Dasar #29

0 Response to "Mencari Hari Pertama dan Terakhir pada Bulan Tertentu - MySQL Dasar #28"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin