Tipe data tanggal (DATE) merupakan salah satu tipe data yang cukup sulit digunakan. Selain memerlukan format tersendiri, hasil dari kolom dengan tipe data date juga 'terbalik', yakni dengan format tampilan YYYY-MM-DD.
Dalam tutorial belajar MySQL kali ini saya akan membahas beberapa fungsi MySQL yang bisa digunakan untuk mengambil dan menampilkan tipe data DATE.
Mempersiapkan Tabel belajar_date
Sebagai tabel sample, saya akan membuat tabel belajar_date. Tabel ini terdiri dari dua kolom bertipe DATE dan TIMESTAMP. Berikut query yang saya gunakan:
mysql> CREATE TABLE belajar_date (dt DATE,ts TIMESTAMP); Query OK, 0 rows affected (0.08 sec)  mysql> INSERT INTO belajar_date VALUES ('2015-08-10','2015-08-10 08:30:15'); Query OK, 1 row affected (0.03 sec)  mysql> INSERT INTO belajar_date VALUES ('2016-08-17','2016-08-17 10:01:01'); Query OK, 1 row affected (0.04 sec)  mysql> INSERT INTO belajar_date VALUES ('2017-12-31','2017-12-31 23:59:59'); Query OK, 1 row affected (0.05 sec)  mysql> SELECT * FROM belajar_date; +------------+---------------------+ | dt        | ts                 | +------------+---------------------+ | 2015-08-10 | 2015-08-10 08:30:15 | | 2016-08-17 | 2016-08-17 10:01:01 | | 2017-12-31 | 2017-12-31 23:59:59 | +------------+---------------------+ 3 rows in set (0.00 sec)
Seperti yang terlihat, MySQL menyimpan kolom bertipe data DATE menggunakan format YYYY-MM-DD, dan untuk tipe data TIMESTAMP dengan format YYYY-MM-DD HH:MM:SS.
Fungsi MySQL untuk Mengambil Nilai Date
MySQL menyediakan beragam fungsi untuk mengambil sebagian data dari kolom bertipe DATE dan TIMESTAMP. Sebagai contoh, kita bisa menggunakan fungsi YEAR() untuk mengambil bagian tahun, seperti query berikut ini:
mysql> SELECT YEAR(dt) FROM belajar_date; +----------+ | YEAR(dt) | +----------+ |Â Â Â Â 2015 | |Â Â Â Â 2016 | |Â Â Â Â 2017 | +----------+ 3 rows in set (0.00 sec)
Pada query diatas, saya menampilkan hanya nilai tahun dari kolom dt. Bagaimana dengan nilai Bulan dan Tanggal? Berikut querynya:
mysql> SELECT MONTH(dt) FROM belajar_date; +-----------+ | MONTH(dt) | +-----------+ |Â Â Â Â Â Â Â Â 8 | |Â Â Â Â Â Â Â Â 8 | |Â Â Â Â Â Â Â 12 | +-----------+ 3 rows in set (0.00 sec) Â mysql> SELECT DAY(dt) FROM belajar_date; +---------+ | DAY(dt) | +---------+ |Â Â Â Â Â 10 | |Â Â Â Â Â 17 | |Â Â Â Â Â 31 | +---------+ 3 rows in set (0.00 sec)
Selain fungsi YEAR(), MONTH() dan DAY() yang saya gunakan, tabel berikut merangkum beberapa fungsi lain yang bisa digunakan untuk tipe data DATE dan TIMESTAMP:
Nama Fungsi | Hasil |
---|---|
YEAR() | Menampilkan nilai tahun |
MONTH() | Menampilkan nilai bulan (1..12) |
MONTHNAME() | Menampilkan nama bulan (January..December) |
DAYOFMONTH() | Menampilkan nilai tanggal (1..31) |
DAYNAME() | Menampilkan nama hari (Sunday..Saturday) |
DAYOFWEEK() | Menampilkan nilai hari (angka 1..7) |
WEEKDAY() | Menampilkan nilai hari (angka 0..6) |
DAYOFYEAR() | Menampilkan urutan hari (1..366) |
HOUR() | Menampilkan nilai jam (0..23) |
MINUTE() | Menampilkan nilai menit (0..59) |
SECOND() | Menampilkan nilai detik(0..59) |
Dengan menggunakan fungsi-fungsi ini kita bisa mengambil nilai yang diinginkan dari kolom DATE dan TIMESTAMP:
mysql> SELECT HOUR(ts) FROM belajar_date; +----------+ | HOUR(ts) | +----------+ |       8 | |      10 | |      23 | +----------+ 3 rows in set (0.00 sec)  mysql> SELECT MINUTE(ts) FROM belajar_date; +------------+ | MINUTE(ts) | +------------+ |        30 | |         1 | |        59 | +------------+ 3 rows in set (0.00 sec)  mysql> SELECT SECOND(ts) FROM belajar_date; +------------+ | SECOND(ts) | +------------+ |        15 | |         1 | |        59 | +------------+ 3 rows in set (0.00 sec)  mysql> SELECT DAYOFYEAR(ts) FROM belajar_date; +---------------+ | DAYOFYEAR(ts) | +---------------+ |          222 | |          230 | |          365 | +---------------+ 3 rows in set (0.00 sec)  mysql> SELECT DAYNAME(ts) FROM belajar_date; +-------------+ | DAYNAME(ts) | +-------------+ | Monday     | | Wednesday  | | Sunday     | +-------------+ 3 rows in set (0.06 sec)  mysql> SELECT ts, DAYNAME(ts) FROM belajar_date; +---------------------+-------------+ | ts                 | DAYNAME(ts) | +---------------------+-------------+ | 2015-08-10 08:30:15 | Monday     | | 2016-08-17 10:01:01 | Wednesday  | | 2017-12-31 23:59:59 | Sunday     | +---------------------+-------------+ 3 rows in set (0.00 sec)
Fungsi CURDATE() dan NOW()
Masih berkaitan dengan tipe data date, MySQL menyediakan fungsi bawaan untuk menghasilkan nilai DATE dan TIMESTAMP sistem saat ini. Fungsi yang bisa digunakan adalah CURDATE() dan NOW().
Berikut contohnya:
mysql> INSERT INTO belajar_date VALUES (CURDATE(), NOW()); Query OK, 1 row affected (0.03 sec)  mysql> SELECT * FROM belajar_date; +------------+---------------------+ | dt        | ts                 | +------------+---------------------+ | 2015-08-10 | 2015-08-10 08:30:15 | | 2016-08-17 | 2016-08-17 10:01:01 | | 2017-12-31 | 2017-12-31 23:59:59 | | 2015-08-04 | 2015-08-04 15:34:14 | +------------+---------------------+ 4 rows in set (0.00 sec)
Fungsi CURDATE() akan menghasilkan nilai DATE yang ada di server dengan format YYYY-MM-DD, sedangkan fungsi NOW() akan menghasilkan nilai TIMESTAMP dengan format YYYY-MM-DD HH:MM:SS. Dalam query diatas, saya menggunakan kedua fungsi ini untuk menginput data baru ke dalam tabel belajar_date.
Dapat anda lihat bahwa kode diatas dijalankan pada tanggal 4 Agustus 2015 pukul 15:34:14, sesuai dengan sistem komputer yang saya gunakan (baris terakhir pada tabel).
Fungsi-fungsi tanggal yang kita bahas kali ini cocok untuk menformat tampilan kolom dengan tipe data DATE dan TIMESTAMP di dalam MySQL. Untuk hasil yang lebih fleksibel, bisa menggunakan fungsi DATE_FORMAT() yang akan saya bahas pada tutorial terpisah.
gan gimana untuk menampilkan select from where date misalkam dari tgl 01 agustus 2015 sampai 31 agustus 2015, dengan format waktu dd/mm/yyyy hh"mm"ss
SELECT *
FROM NamaTable
WHERE (NamaField >= '01/08/2015') AND (NamaField <= '31/08/2015')
atau bisa juga seperti ini :
SELECT *
FROM NamaTable
WHERE NamaField BETWEEN '01/08/2015' AND '31/08/2015'
pas banget nih ada tugas kampus disuruh ini :D thanks gan
Siip gan, semoga bermanfaat untuk tugasnya…
mas klo mau mengambil data dari tabel berdasarkan tanggal sekarang, dengan code php seperti ini:
function Tgl1(){
include 'db.php';
$query = $db->prepare("SELECT * FROM line1");
$query->execute();
$data = $query->fetchAll();
foreach ($data as $value){ return $value['date'];}
}
mohon dibantu karena belum berhasil…
*baru belajar mas.
dan ini code memfilter pengambilan data,….
mohon bantuanya mas Andre…
<?php include 'db.php';
date_default_timezone_set('Asia/Jakarta');
$query = $db->prepare("SELECT * FROM line1");
$query->execute();
$data = $query->fetchAll();
if(date("Y-m-d") == Tgl1()){
foreach ($data as $value){ echo $value['po'] . "<hr/></br>"; }
}
else{
echo"Tidak Ada Request Untuk TANGGAL " .date("d/M/Y") . "<hr/></br>";
}
?>
Pertanyaannya di tampung dulu ya, soalnya belum sempat buka2 MySQL lagi nih.
Tapi yang jelas di tabel tersebut harus ada 1 kolom yang bertipe DATE. Nanti tinggal ditambahkan saja perintah WHERE, seperti:
SELECT * FROM line1 WHERE tanggal_input=20170206.
Kolom tanggal_input harus di set dengan tipe DATE dan diisi data DATE MySQL.
ane mau nyoba masukin tanggal di tugas kuliah, tapi kayaknya rumit juga.
Hasilnya gak dimasukin untuk nilai date ini :)
MySQL memerlukan format khusus untuk kolom bertipe DATE, jadi kita memang butuh proses konversi lagi dari sisi PHPnya…
gan mau tanya, kalo kita ingin mengambil hari hanya berdasarkan id terakhir yang baru diinputkan. jadi misalkan kita menginputkan suatu data, nanti yang ditampilkan hanya si hari dari id yang baru saja kita inputkan, itu bagaimana ya? mohon pencerahannya gan hehe,makasih banyak
Yang jadi masalah, kita harus mencari cara untuk menambil data "yang diinput terakhir". Agan harus buat sebuah kolom khusus untuk keperluan ini, misalnya kolom "tanggal_input", kemudian set nilainya dengan tanggal pada saat diinput. Dengan demikian nanti tinggal di sort saja berdasarkan "tanggal_input", ambil 1 data terkahir (pakai query LIMIT).
assalamualikum.. min.. gimana cara nya menampilkan data, dalam kurun waktu 1 minggu. dimulai dari hari senin sampai sabtu.. yang ditampilkan hanya tanggal dari bulan yang sama ?
jika ingin menampilkan 25/11 dari 25/11/2019 bagaimana caranya gan..
Di MySQL, tipe data DATE disimpan dengan format YYYY-MM-DD, jadi tanggal "25/11/2019" tidak bisa diinput. Harus di konversi dulu dalam bentuk YYYY-MM-DD.
Gan.. gimana kalo jquery yang menampilkan tanggal yang diambil dari php di database?
Konversi tanggal di database dengan jquery ?
bagaimana jika mengambil selisih tanggal pertama dan tanggal kedua, kemudian menampilkan data barang jika berada pada jarak tersebut?
SELECT *
FROM NamaTable
WHERE NamaBarang BETWEEN '01/08/2015' AND '02/08/2015'
gan seumpama saya mau nampilin tanggal hari ini dikurangi bln ini yang di haasilkan tgl akhirnya gmna gan?