Skip to content

Mendapatkan tanggal terakhir dibulan tertentu

31 December 2007

Satu lagi yang membuat saya kagum dengan MySQL adalah fungsi-fungsi bawaanya yang sangat memudahkan kita. Bahasan kali ini sesuai judul artikel adalah bagaimana kita mendapatkan Tanggal terakhir di bulan tertentu. Mungkin sebagian tidak terlalu care dengan fungsi ini karena memang belum menemukan kasusnya dimana Anda membutuhkannya. Namun begitu, bagi yang memang sedang mencari atau sekedar informasi saja, maka cara dibawah ini semoga cukup membantu Anda.

Fungsi yang dimaksud diatas adalah LAST_DAY. Fungsi ini cukup Anda panggil dengan sebuah parameter tanggal saja, dan akan mengembalikan tanggal akhirnya dari parameter tersebut.

Contoh : Kita ingin mengetahui tanggal terkahir di bulan desember 2007. Yang perlu diperhatikan disini adalah bulan dan tahunnya. Untuk tanggal Anda bisa bebas memilih tanggal di range tanggal yang valid. Apabila Anda menggunakan tanggal 32 atau 45 yang notabene bukan tanggal valid, maka hasilnya akan null.

SELECT LAST_DAY('2007-12-01') AS TGLAKHIR

Hasil eksekusi query diatas akan menghasilkan ‘2007-12-31’. See, that’s very simple isn’t it ?

Disamping menggunakan fungsi LAST_DAY diatas, Anda dapat menggunakan cara manual dengan menggunakan beberapa fungsi date. Misal saya ingin mendapatkan tanggal terakhir dibulan desember 2007. Logikanya berarti Tanggal 1 bulan berikutnya (Januari) dikurangi 1 hari. Flow querynya kira-kira seperti berikut :

1. Bulan desember 2007 kita tambah 1 Bulan sehingga menjadi januari 2008 menggunakan fungsi DATE_ADD()
2. Kita ambil bulan dan tahunnya saja (Januari 2008) menggunakan fungsi LEFT()
3. Set Januari ke tanggal 01 menggunakan fungsi CONCAT()
4. Kurangi 1 hari dari tanggal 1 Januari 2008 menggunakan fungsi DATE_SUB()

Bahasan fungsi-fungsi diatas dapat Anda lihat pada artikel saya sebelumnya.

Jika kita terjemahkan logika diatas ke dalam query, maka akan terlihat seperti berikut ini :

SELECT DATE_SUB(CONCAT(LEFT(DATE_ADD('2007-12-01', INTERVAL 1 MONTH),7),'-01'), INTERVAL 1 DAY) AS TGLAKHIR

Hasil ekseskusi query akan menghasilkan : ‘2007-12-31’

Mungkin Anda bertanya-tanya, kenapa harus ada step kedua pada flow diatas yaitu mengambil bulan dan tahun saja dengan fungsi LEFT ? apabila bulan yang ingin dicari tanggal akhirnya diisi dengan tanggal 1, seperti 2007-12-01 diatas, maka otomatis jika ditambah 1 bulan, pasti hasilnya akan tanggal 01 juga yang berarti tinggal dikurangi langsung dengan DATE_SUB. Tapi….tunggu dulu, step itu perlu apabila bulan yang ingin Anda cari tanggal akhirnya bukan tanggal 1, maka Anda harus set ke tanggal 1 dulu di bulan berikutnya. Misal ‘2007-12-20’ + 1 Bulan. Anda bisa lihat jika kemudian dikurangi satu hari, maka yang keluar bukan ‘2008-01-01’, melainkan ‘2008-01-20’. You know what happen jika selanjutnya dikurangi 1 hari kan😀

Dari bahasan diatas Anda dapat membandingkan, jika menggunakan fungsi LAST_DAY akan jauh lebih simple dari cara kedua. Namun begitu Logika cara kedua mungkin membantu untuk menambah wawasan Anda saja. Tertarik untuk mencoba ?

Silahkan isi comment atau saran Ada. Apabila Anda punya solusi lain, i’d love to know it. Please share.

No comments yet

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: