Achmatim.Net



« | »

Perintah MySQL berhubungan dengan Tanggal dan Waktu

Penanganan tanggal dan waktu merupakan hal yang cukup penting dalam suatu software basis data, termasuk MySQL. Bahkan MySQL memiliki lebih dari 50 fungsi khusus berhubungan dengan tanggal dan waktu. Selengkapnya dapat dilihat di dokumentasi resmi MySQL. Di tutorial ini, saya tidak akan membahas satu per satu fungsi tersebut, sebagian besar fungsi sudah saya jelaskan di buku gratis mysqlMySQL 5: Dari Pemula Hingga Mahir” yang saya publikasikan secara gratis beberapa waktu lalu. Namun dalam tutorial ini saya akan coba menyajikan beberapa contoh perintah MySQL berhubungan dengan tanggal dan waktu yang selama ini sering saya gunakan.

Semoga daftar berikut ini bermanfaat untuk kita semua.

(1) Fungsi untuk menampilkan tanggal dan waktu saat ini

Untuk menampilkan tanggal dan waktu saat ini (server), saya sering menggunakan fungsi NOW(). Selain itu, dapat juga menggunakan CURDATE() yang akan menghasilkan tanggal saat ini dan CURTIME() yang akan menghasilkan waktu saat ini (tanpa tanggal). Berikut ini contoh dan hasil tampilannya:

mysql> SELECT NOW(), CURDATE(), CURTIME();
+---------------------+------------+-----------+
| NOW()               | CURDATE()  | CURTIME() |
+---------------------+------------+-----------+
| 2010-09-20 22:01:22 | 2010-09-20 | 22:01:22  |
+---------------------+------------+-----------+
1 row in set (0.00 sec)

(2) Fungsi untuk Mengatur (Format) Tampilan Tanggal dan Waktu

Seperti kita ketahui bersama, format default tanggal di MySQL adalah YYYY-MM-DD. Format tersebut harus diikuti, terutama saat menyimpan nilai kedalam field yang bertipe DATE. Nah, seringkali dalam menyajikan data ke user, kita memerlukan format tanggal yang berbeda dari format tanggal default tersebut. Misalnya kita ingin menampilkan tanggal dalam format DD/MM/YYYY atau format panjang seperti ‘September 20th, 2010′. Lalu, bagaimana caranya? Saya sering menggunakan fungsi DATE_FORMAT() untuk mengatur tampilan tanggal dan waktu. Dengan fungsi ini kita dapat menampilkan tanggal dalam berbagai format. Format selengkapnya dapat dilihat di sini.

Berikut ini contohnya:

mysql> SELECT DATE_FORMAT(NOW(), '%d/%m/%Y') as tanggal1, DATE_FORMAT(NOW(), '%M %D, %Y') as tanggal2;
+------------+----------------------+
| tanggal1   | tanggal2             |
+------------+----------------------+
| 20/09/2010 | September 20th, 2010 |
+------------+----------------------+
1 row in set (0.00 sec)

(3) Fungsi untuk Memecah Tanggal dan Waktu

Dari suatu field tanggal dan waktu yang tersimpan secara lengkap, seringkali kita hanya ingin mengambil bagian tertentu saja. Misalnya hanya ingin mengambil tahun atau tanggalnya saja. Selain menggunakan fungsi DATE_FORMAT(), kita dapat memecah tanggal dengan menggunakan fungsi seperti YEAR() untuk mengambil tahun, MONTH() untuk mengambil bulan, DAY() untuk mengambil hari, HOUR() untuk mengambil jam, MINUTE() untuk mengambil menit dan SECOND() untuk mengambil detik.

Berikut ini contoh perintahnya:

mysql> SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
+-------------+--------------+------------+-------------+---------------+---------------+
| YEAR(NOW()) | MONTH(NOW()) | DAY(NOW()) | HOUR(NOW()) | MINUTE(NOW()) | SECOND(NOW()) |
+-------------+--------------+------------+-------------+---------------+---------------+
|        2010 |            9 |         20 |          22 |            21 |            11 |
+-------------+--------------+------------+-------------+---------------+---------------+
1 row in set (0.00 sec)

(4) Fungsi untuk Penambahan dan Pengurangan Tanggal dan Waktu

Penambahan dan Pengurangan tanggal dan waktu merupakan operasi yang sering dilakukan terhadap tanggal. Contohnya jika kita ingin mengetahui tanggal berapakah 1 minggu ke depan, atau tanggal berapakah 10 hari yang lalu. Operasi tersebut dapat menggunakan fungsi DATE_ADD() dan DATE_SUB().

Berikut ini contoh sederhananya:

mysql> SELECT CURDATE() as sekarang, DATE_ADD(CURDATE(), INTERVAL 1 WEEK) as '+ 1 minggu',
 -> DATE_SUB(CURDATE(), INTERVAL 10 DAY) as '- 10 hari';
+------------+------------+------------+
| sekarang   | + 1 minggu | - 10 hari  |
+------------+------------+------------+
| 2010-09-20 | 2010-09-27 | 2010-09-10 |
+------------+------------+------------+
1 row in set (0.00 sec)

(5) Fungsi untuk Mencari Perbedaan diantara Dua Tanggal atau Waktu

Sebelumnya, kita sudah mengenal fungsi untuk menambah dan mengurangi tanggal atau waktu dengan interval tertentu. Lalu bagaimana caranya untuk mencari perbedaan di antara dua tanggal atau waktu? Contoh sederhananya misalnya untuk mencari umur seseorang berdasarkan tanggal lahirnya. Solusinya sebenarnya cukup beragam, dapat menggunakan fungsi PERIOD_DIFF() yang akan menghasilkan selisih bulan dari dua tanggal (tanggal sekarang dan tanggal lahir), lalu tinggal dibagi dengan 12 untuk mendapatkan umur dalam tahun. Selain itu, kita juga dapat mencari tahun dari masing-masing tanggal sekarang dan tanggal lahir lalu dikurangkan. Lihat contoh perintahnya sebagai berikut:

mysql> SELECT ((year(curdate())-year('1982-06-05')) - (right(curdate(),5) < right('1982-06-05',5))) as umur;
+------+
| umur |
+------+
|   28 |
+------+
1 row in set (0.00 sec)

Demikian 5 Variasi Perintah MySQL berhubungan dengan Tanggal dan Waktu yang sering saya gunakan. Semoga bermanfaat untuk kita semua. Amin

Maju Terus Ilmu Pengetahuan Indonesia!

Posted by on September 20, 2010.

Tags: ,

Categories: mysql, web development

30 Responses

  1. Nice Article, inspiring. Aku juga suka nulis artikel bidang penyembuhan dan kesehatan di blogku : http://www.TahitianNoniAsia.net, silahkan kunjungi, mudah-mudahan manfaat

    by Yohan Wibisono on Sep 21, 2010 at 14:36

  2. [...] Baca Detail : Perintah MySQL berhubungan dengan Tanggal dan Waktu dari Achmatim.Net [...]

    by Perintah MySQL berhubungan dengan Tanggal dan Waktu dari Achmatim.Net - Cari Judul Skripsi, Makalah, Laporan on Sep 22, 2010 at 06:19

  3. Bang saya mau nanya ya…
    Saya punya data tabel absensi siswa, field dianaranya sbb. tgl_absn, absensi,ket.
    Untuk repot tampilan tanggal hari ini sudah bisa, tapi saya ingin menampilkan berdasarkan bulan sekarang atau kemarin atau bulan tertentu, demikian juga ingin menampilkan tanggal absen tertentu. saya sudah coba buat form-nya tapi ngak bisa dikenali kirimannya dari form tersebut. sisi penerima pada input tanggal begini:
    …. WHERE tgl_absen like %cari% AND level=’siswa’
    Tolong beri contoh untuk di bagian form-nya.
    Terima kasih.

    by Adhi on Sep 22, 2010 at 10:31

  4. #Adhi
    Mungkin biar sama-sama belajar, kamu kirim form yang sudah dibuat ke email achmatim@gmail.com, nanti coba saya lihat, sapa tau ada yang kurang.

    by achmatim on Sep 22, 2010 at 10:45

  5. Assalamu’alaikum Pak saya mau tanya tentang vb.net saya mau mencari nama pd aplikasi vb.net, nah ketika ingin mencarinya it berhasil tapi ketika ditambah tanda kutip jadi error contoh :   Ma’rif ketika di cari jadi error
     

    by Yk on Jan 24, 2011 at 14:30

  6. Terimakasih tak terhingga dari saya buat Mas Achmatim.
    Website Anda sangat membantu saya dalam belajar php dan mysql. Saya berharap akan ada bahasan mengenai server.

    by situmpul on Mar 6, 2011 at 15:26

  7. maz q yudi, q da tgs untuk buat jurnal harian. trs mslh q tu da di tabel master akun!!
    kan di master akun tercancum no rekening trs no rekeningnya tu bersifat menual jd input sendiri gitu loh, ah yg diminta tu otomatis???
    trs cara butanya gmn mas,
    kl no rekeningnya 01.01.02?
    kan harus gabungkan no parent dan no childnya to?
    tu gmn mas sourcenya?
    terima kasih banyak
    q harap mas bs bntu saya?

    by wahyudi on Apr 6, 2011 at 16:22

  8. wow… keren,,, ini yang saya cari2… dipraktekkan dulu pak, lagi ada tugas tentang trigger dan function

    by app wap on Jun 5, 2011 at 00:32

  9. bapak Ihat lgi bkin report  di Ireport dengan Database MYSQL yang harus menampilkan data untuk bulan tertentu sesuai yg diinginkan… dah di coba2 tp te2p eror gk mau tampil….

    by ihat on Aug 13, 2011 at 21:16

  10. terima kasih mas tutorialnya :D

    by peringkat perguruan tinggi on Nov 11, 2011 at 02:00

  11. mantappppppppppppppppppp

    by jio on Nov 15, 2011 at 20:21

  12. Ijn Copas ==> http://www.genxvb.co.cc
     

    by ryo on Nov 25, 2011 at 10:04

  13. bagaimana cara menampilkan data ketika kita input tanggal tertentu yang muncul data yang ada pada tanggal itu dan tanggal kemarinnya?

    by amin on Dec 24, 2011 at 21:45

  14. Mantab…
    mksih Gan, artikelnya sangat membantu

    by suwito on Jun 13, 2012 at 10:01

  15. mantap :D

    mas kalau mau mencari atau menampilkan data berdasarkan range tanggal sekian sampe sekian gmn ya?

    by and on Jul 7, 2012 at 13:03

  16. Nice Tutorial…
    Thanks alot… :D

    by Sabbana Returns on Dec 16, 2012 at 13:03

  17. terima kasih infonya.

    by Zulkifli on Dec 28, 2012 at 21:24

  18. pa mau tanya bagai mana menampilkan laporan per priode pada dreamweaver tolong dong pa udaah nayari – nayari kaga ketemu udah ampe pusing tolong ya pa

    by andi on Feb 9, 2013 at 15:15

  19. saya mohon izin pake mas, buat ngajar

    by bayhaki on Feb 27, 2013 at 08:37

  20. Saya mau tanya, jika ingin meng-insert data (misal) ID yg berupa primary key dan autoincreament namun isinya sesuai tanggal data saat di-insert (misal insert tgl 20 Sept. 2013, IDnya jd 201309201) itu gmn ya?

    by Noname on Sep 23, 2013 at 09:34

  21. Selamat sore Pak, saya mau nanya bagaimana caranya menampilkan data transaksi yang sekarang sedangkan data transaksi kemarin tidak mucul di tabel website, mohon pencerahannya Pak karena saat ini saya lagi mencarinya.
    Terima kasih.

    by Nanang on Dec 13, 2013 at 15:46

  22. Ya harus tau struktur tabelnya seperti apa. Intinya tinggal atur kondisinya, misalnya berdasarkan tanggal, WHERE tanggal_transaksi = NOW()

    by Achmad Solichin on Dec 13, 2013 at 19:48

  23. Pak mau tanya,study kasus”Saya punya tabel biaya,field nya id(auto_increment),tanggal(date),harga(varchar).bagaimana query untuk menjumlahkan harga berdasarkan bulan dan tahun ya pak?misalkan kita pilih dari combobox bulan 9 tahun 2012,maka query nya menjumlahkan harga dari 1 sampai bulan 8,jika milih combobox bulan 1 tapi tahun nya 2013 maka jumlahkan harga dari bulan 1 sampai bulan 12 tahun 2012″,bagaimana query sql nya jika spt itu pak?sebelumnya terima kasih

    by rafif on Dec 15, 2013 at 18:09

  24. Kurang lebih bisa dilakukan dengan query:
    SELECT SUM(harga) as jumlah FROM biaya WHERE tanggal BETWEEN ‘yyyy-mm-dd’ AND ‘yyyy-mm-dd’

    tanggal awal dan akhir bisa diatur di PHP.

    by Achmad Solichin on Dec 15, 2013 at 18:29

  25. maaf pak,harga ga pake varchar tapi double

    by rafif on Dec 15, 2013 at 18:36

  26. misal gini pak=
    hasil dari pilihan combobox
    $bulan=$_POST[bulan];—>misalnya bulan 1
    $tahun=$_POST[tahun];—>misalnya tahun 2013
    data di field tanggal memeang ‘yyyy-mm-dd’,tapi saya ingin mengetahui jumlah berdasarkan bulan dan tahun saja,(isi database hanya bulan maret,november dan desember 2012 saja).
    saya sudah coba gini pak
    (select sum(harga) as total from biaya where month(tanggal)<='$bulan')tapi kalau pilih bulan januari tapi tahun 2013 hasilnya kok 0 ya?harusnya hasilnya tetep penjumlahan dari januari sampai desember 2012.

    by rafif on Dec 15, 2013 at 18:51

  27. Mau Nanya Kang,
    Kalo untuk menampilkan Bulan dan tahun saja gimana yach cara select nya?
    misalkan OrderDate = 2014-02-25 jadi February,2014

    Di Mysql Bisa nggak yach??

    Thanks

    by jack on Feb 19, 2014 at 15:03

  28. coba query sbb:
    select date_format(now(), “%M, %Y”)

    by Achmad Solichin on Feb 21, 2014 at 23:08

  29. Thanks gan . . . jadi mempermudah codingan ane.. . hehe

    by Muhamad Nurhusaeni on May 7, 2014 at 12:24

  30. Mas bisa bantu kita ndak, bagaimana membuat laporan tunggakan/ piutang bulanan. Contoh untuk januari 2014 sampai mei , ada pelanggan yang belum bayar. kalo kita kan yang terimput data yang sudah bayar, berarti kita hanya menyeleksi data yang belum bayar aja ya. tapi untuk penggunaan periode apakah pakai perhitungan waktu juga.

    by Campreths Doanks on May 8, 2014 at 17:34

Leave a Reply

 

« | »




Recent Posts


Pages