Cara Bekerja Secara Efektif Dengan Tanggal dan Waktu di MySQL
Pelajari semua perintah yang kamu perlukan untuk mengelola tanggal dan waktu serta menentukan kueri database terkait waktu dalam SQL.
Tanggal dan waktu penting, mereka membantu menjaga segala sesuatunya tetap teratur, dan merupakan aspek integral dari operasi perangkat lunak apa pun.
Bekerja secara efisien dengan mereka dalam database kadang-kadang tampak membingungkan, apakah itu bekerja di berbagai zona waktu, menambah/mengurangi tanggal, dan operasi lainnya.
Pelajari berbagai fungsi MySQL yang tersedia untuk menangani dan mengelola tanggal/waktu dengan mudah dalam database kamu.
Bekerja Dengan Zona Waktu
Untuk membantu menjaga hal-hal stkamur, kamu hanya boleh bekerja dengan tanggal / waktu di zona waktu UTC. Setiap kali kamu membuat koneksi ke database MySQL, kamu harus mengalihkan zona waktu ke UTC, yang dapat dilakukan dengan pernyataan SQL berikut:
SET TIME_ZONE = '+0:00'
Karena semua tanggal sekarang akan disimpan dalam UTC, kamu selalu tahu apa yang sedang kamu kerjakan, menjadikannya lebih sederhana dan mudah.
Bila perlu, kamu dapat dengan mudah mengonversi zona waktu dari nilai datetime / timestamp apa pun dengan fungsi MySQL CONVERT_TZ() yang praktis. kamu perlu mengetahui offset terlebih dahulu, misalnya PST di pantai barat Amerika Utara adalah UTC -08:00, jadi kamu dapat menggunakan:
SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');
Ini menghasilkan 2021-02-04 13:47:23 yang persis benar. Tiga argumen yang diteruskan ke CONVERT_TZ() adalah yang pertama adalah tanggal/stempel waktu yang kamu mulai (gunakan sekarang() untuk waktu saat ini), yang kedua akan selalu '+0:00' karena semua tanggal dipaksa ke UTC dalam database , dan yang terakhir adalah offset yang ingin kita ubah tanggalnya.
Tambah / Kurangi Tanggal
Sering kali kamu perlu menambah atau mengurangi tanggal, seperti jika kamu perlu mengambil catatan dari seminggu yang lalu, atau menjadwalkan sesuatu sebulan dari sekarang.
Untungnya MySQL memiliki fungsi DATE_ADD() dan DATE_SUB() yang sangat baik sehingga tugas ini sangat mudah. Misalnya, kamu dapat mengurangi dua minggu dari tanggal saat ini dengan pernyataan SQL:
SELECT DATE_SUB(now(), interval 2 week);
Jika sebaliknya kamu ingin menambahkan tiga hari ke stempel waktu yang ada, kamu akan menggunakan:
SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);
Kedua fungsi bekerja sama, argumen pertama adalah stempel waktu yang kamu gunakan untuk memulai, dan argumen kedua adalah interval untuk menambah atau mengurangi. Argumen kedua selalu diformat sama dimulai dengan interval kata diikuti dengan nilai numerik dan interval itu sendiri, yang dapat berupa salah satu dari berikut ini: detik, menit, jam, hari, minggu, bulan, kuartal, tahun.
Sebagai contoh lain, jika kamu ingin mengambil semua login yang terjadi dalam 34 menit terakhir, kamu dapat menggunakan pernyataan SQL seperti:
SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);
Seperti yang kamu lihat, ini akan mengambil semua record dari tabel login dengan tanggal login lebih besar dari waktu saat ini dikurangi 45 menit, atau dengan kata lain, 45 menit terakhir.
Dapatkan Perbedaan Antara Tanggal
Terkadang kamu perlu mengetahui berapa banyak waktu yang telah berlalu antara dua tanggal. kamu dapat dengan mudah mendapatkan jumlah hari antara dua tanggal yang berbeda dengan fungsi DATEDIFF , seperti pernyataan SQL di bawah ini:
SELECT DATEDIFF(now(), '2020-12-15');
Fungsi DATEDIFF mengambil dua argumen, keduanya adalah stempel tanggal/waktu dan memberikan jumlah hari di antaranya. Contoh di atas akan menunjukkan jumlah hari yang telah berlalu dari 15 Desember 2020 hingga hari ini.
Untuk mendapatkan jumlah detik di antara dua tanggal, fungsi TO_SECONDS() bisa berguna, misalnya:
SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');
Ini akan menghasilkan jumlah detik antara dua tanggal yang disediakan.
Ekstrak Segmen Dari Tanggal
Ada berbagai fungsi MySQL yang memungkinkan kamu mengekstrak segmen tertentu dengan mudah dari tanggal, seperti jika kamu hanya menginginkan bulan, hari, atau jam. Berikut beberapa contoh fungsi tersebut:
SELECT MONTH('2021-02-11 15:27:52');
SELECT HOUR(now());
SELECT DAYOFYEAR('2021-07-15 12:00:00');
Pernyataan SQL di atas akan menghasilkan 02 , jam saat ini, dan 196 karena 15 September adalah hari ke 196 dalam setahun. Berikut daftar semua fungsi ekstraksi tanggal yang tersedia, masing-masing hanya mengambil satu argumen, tanggal diekstraksi dari:
- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)
Misalnya, jika mungkin kamu hanya ingin mengambil bulan dan tahun pembuatan semua pengguna, kamu dapat menggunakan pernyataan SQL seperti:
SELECT id, MONTH(created_at), YEAR(created_at) FROM users;
Ini akan mengambil semua catatan dalam tabel pengguna dan menunjukkan id #, bulan dan tahun setiap pengguna dibuat.
Mengelompokkan Record berdasarkan Periode Tanggal
Salah satu penggunaan fungsi tanggal yang sangat baik adalah kemampuan untuk mengelompokkan catatan berdasarkan periode tanggal menggunakan GROUP BY dalam pernyataan SQL kamu. Misalnya, mungkin kamu ingin menarik jumlah total semua pesanan di tahun 2020 yang dikelompokkan berdasarkan bulan. kamu bisa menggunakan pernyataan SQL seperti:
SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);
Ini akan mengambil semua pesanan yang dilakukan pada tahun 2020, mengelompokkannya berdasarkan bulan pembuatannya, dan mengembalikan 12 catatan yang menunjukkan jumlah total pesanan setiap bulan dalam setahun.
Harap dicatat, untuk kinerja indeks yang lebih baik, sebaiknya hindari penggunaan fungsi tanggal seperti YEAR() dalam klausa WHERE dari pernyataan SQL, dan sebagai gantinya gunakan operator BETWEEN seperti yang ditunjukkan pada contoh di atas.
Jangan Bingung Dengan Tanggal Lagi
Dengan menggunakan pengetahuan di atas, kamu sekarang dapat bekerja dengan efisien, menerjemahkan, dan melakukan operasi pada tanggal dan waktu dalam beragam kasus penggunaan.
Ingatlah untuk selalu menggunakan UTC saat bekerja dengan tanggal untuk kesederhanaan, dan gunakan tip di atas untuk mengelola tanggal secara efisien dalam perangkat lunak kamu, apakah itu untuk menyelesaikan perhitungan sederhana atau dengan mudah menarik laporan yang dikelompokkan berdasarkan periode tanggal.
Jika kamu agak baru mengenal SQL, pastikan untuk memeriksa perintah SQL penting ini untuk membantu meningkatkan penggunaan SQL kamu.
Posting Komentar untuk "Cara Bekerja Secara Efektif Dengan Tanggal dan Waktu di MySQL"