Masalah:
Anda ingin mengekstrak waktu dari nilai string di MySQL.
Contoh:
Anda memiliki nilai string yang terlihat seperti ini:
‘Wednesday, 10 February 2021, 12:30:20’
Anda hanya ingin mengekstrak bagian waktu, '12:30:20'.
Solusi:
Berikut pertanyaannya:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Diskusi:
Untuk mengilustrasikan prosesnya dengan lebih jelas, kami akan menjelaskannya dalam dua bagian.
Pertama, kita harus mengonversi string menjadi nilai tanggal. Untuk melakukan ini, kami menggunakan STR_TO_DATE
fungsi. Kueri akan terlihat seperti ini:
SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
Tujuan STR_TO_DATE
fungsinya adalah untuk mengonversi string teks ke format datetime. Sintaks untuk fungsi ini adalah sebagai berikut:
STR_TO_DATE(string, format);
Argumen pertama dari fungsi ini adalah string yang ingin kita konversi. Argumen kedua menentukan format string. Dalam kasus kami, kami menggunakan parameter berikut:
- %W:Nama hari kerja dari Minggu sampai Sabtu.
- %d:Hari dalam sebulan sebagai nilai numerik dari 01 hingga 31.
- %m:Bulan sebagai nilai numerik dari 01 hingga 12.
- %Y:Tahun sebagai nilai numerik 4 digit (yyyy).
- %T:Waktu dalam format 24 jam (jj:mm:dd).
Anda dapat menemukan lebih banyak parameter dalam dokumentasi resmi untuk MySQL.
Hasil kueri ini akan terlihat seperti ini:
2021-02-10 12:30:20
Sekarang kita memiliki nilai dalam tipe data DATETIME. Untuk mengekstrak hanya waktu, kita harus menambahkan DATE_FORMAT
fungsi ke kueri di atas.
Sintaks umum DATE_FORMAT
fungsinya adalah:
DATE_FORMAT(date, format)
Maka kueri kita akan terlihat seperti ini:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Dalam contoh kita, argumen pertama dari DATE_FORMAT
fungsi adalah tanggal yang dihasilkan dari STR_TO_DATE
fungsi. Argumen kedua adalah formatnya, yang bekerja dengan cara yang sama seperti pada STR_TO_DATE
fungsi. Karena kita hanya membutuhkan waktu di sini, kita tentukan "%T
" sebagai argumen kedua.
Karakter % adalah wajib sebelum karakter penentu format. Kita harus menentukan format dalam urutan yang sama persis, termasuk semua tanda baca.
Hasil kueri yang kita lihat di bawah adalah hasil yang diharapkan.
12:30:20
Dengan menggunakan kombinasi kedua fungsi ini, Anda dapat mengekstrak setiap kemungkinan kombinasi tanggal dan waktu dari string teks.