Masalah:
Anda ingin mendapatkan perbedaan, dalam hitungan hari, antara dua tanggal di database MySQL.
Contoh:
Basis data kami memiliki tabel bernama food
dengan data pada kolom id
, name
, purchase_date
, dan expiration_date
.
id | nama | tanggal_pembelian | tanggal_kedaluwarsa |
---|---|---|---|
1 | roti | 20-07-2019 | 22-08-2019 |
2 | mentega | 30-07-2018 | 10-08-2019 |
3 | susu | 01-12-2019 | 13-01-2019 |
4 | yoghurt | 25-02-2019 | 24-02-2019 |
Untuk setiap produk makanan, mari kita lihat nama produk dan jumlah hari antara tanggal kedaluwarsa dan tanggal pembelian.
Solusi:
Kami akan menggunakan DATEDIFF()
fungsi. Inilah kueri yang akan Anda tulis:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Berikut hasil querynya:
nama | hari |
---|---|
roti | 33 |
mentega | 376 |
susu | 1 |
yoghurt | -1 |
Diskusi:
Gunakan DATEDIFF()
berfungsi untuk mengambil jumlah hari antara dua tanggal dalam database MySQL. Fungsi ini membutuhkan dua argumen:
- Tanggal akhir. (Dalam contoh kita, ini adalah
expiration_date
kolom.) - Tanggal mulai. (Dalam contoh kami, ini adalah
purchase_date
kolom.)
Argumen ini dapat berupa nilai tanggal/waktu, ekspresi yang mengembalikan nilai tanggal/waktu, atau kolom dari tipe data tanggal/tanggal.
Fungsi ini mengurangi tanggal mulai dari tanggal akhir dan mengembalikan jumlah hari sebagai bilangan bulat. Dalam contoh kita, mentega dibeli pada '30-07-2018', tetapi tanggal kedaluwarsanya adalah '2019-08-10'; setelah pembelian, itu bisa dimakan selama 376 hari. Perhatikan bahwa yogurt dibeli sebagai produk usang:perbedaan hari adalah -1 dan tanggal pembeliannya lebih lambat dari tanggal kedaluwarsanya.