MySQL STR_TO_DATE()
fungsi memungkinkan Anda membuat nilai tanggal dari berbagai bagian tanggal.
Saat menggunakan fungsi ini, Anda memberikan string dari berbagai bagian tanggal, dan argumen kedua yang menentukan format tanggal yang disediakan.
Sintaks
Sintaksnya seperti ini:
STR_TO_DATE(str,format)
Dimana str
adalah string yang berisi bagian tanggal, dan format adalah string format (menentukan bagaimana str
argumen diformat).
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
SELECT STR_TO_DATE('31,12,1999','%d,%m,%Y');
Hasil:
+--------------------------------------+| STR_TO_DATE('31,12,1999','%d,%m,%Y') |+--------------------------- -----------+| 1999-12-31 |+----------------------------------+
Contoh 2 – Urutan Format String
String format harus cocok dengan nilai yang diberikan dalam string tanggal. Misalnya, Anda tidak dapat melakukan hal berikut:
SELECT STR_TO_DATE('31,12,1999','%m,%d,%Y');
Hasil:
+--------------------------------------+| STR_TO_DATE('31,12,1999','%m,%d,%Y') |+--------------------------- -----------+| NULL |+----------------------------------+
Alasan ini tidak berhasil adalah karena kami mencoba memaksa bulan memiliki nilai 31, tetapi hanya ada 12 bulan dalam setahun. Jadi ini akan menghasilkan nilai tanggal yang tidak valid.
Oleh karena itu, Anda harus berhati-hati saat menggunakan fungsi ini, terutama jika nilai hari adalah 12 atau kurang, jika tidak, Anda bisa berakhir dengan nilai bulan dan hari yang tertukar tanpa menyadarinya.
Misalnya seperti ini:
SELECT STR_TO_DATE('07,12,1999','%d,%m,%Y'), STR_TO_DATE('07,12,1999','%m,%d,%Y');Hasil:
+--------------------------------------+------- -------------------------------+| STR_TO_DATE('07,12,1999','%d,%m,%Y') | STR_TO_DATE('07,12,1999','%m,%d,%Y') |+--------------------------- -----------+-------------------------------------- +| 1999-12-07 | 1999-07-12 |+----------------------------------+---- ----------------------------------+Dalam hal ini, kita tidak mendapatkan nilai NULL seperti pada contoh sebelumnya, karena keduanya
07
dan12
bisa sehari atau sebulan.Contoh 3 – Mencocokkan Format String
Meskipun string format dalam urutan yang benar, itu juga harus cocok dengan format bagian tanggal yang disediakan dalam argumen pertama.
Jadi misalnya, Anda tidak dapat melakukan ini:
SELECT STR_TO_DATE('31 Des, 1999','%d,%m,%Y');Hasil:
+---------------------------------------+| STR_TO_DATE('31 Des, 1999','%d,%m,%Y') |+---------------------------- ------------+| NULL |+--------------------------------------------------+Dalam hal ini, kita perlu melakukan sesuatu seperti ini:
SELECT STR_TO_DATE('31 Des, 1999','%d %M, %Y');Hasil:
+-----------------------------------------+| STR_TO_DATE('31 Des, 1999','%d %M, %Y') |+----------------------------- ------------+| 1999-12-31 |+------------------------------+Contoh 4 – Menggunakan Fungsi GET_FORMAT()
Anda juga dapat meneruskan
GET_FORMAT()
berfungsi sebagai argumen kedua.Ini contohnya.
SELECT STR_TO_DATE('12.07.1999', GET_FORMAT(DATE, 'USA'));Hasil:
+------------------------------------------------- ------+| STR_TO_DATE('12.07.1999', GET_FORMAT(DATE, 'USA')) |+------------------------------- ----------+| 1999-12-07 |+-------------------------------------------------- ---------+Contoh 5 – Nilai Waktu Tanggal
Anda juga dapat menggunakan fungsi ini untuk mengembalikan nilai waktu atau waktu.
Berikut ini contoh penggunaan nilai datetime.
SELECT STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s');Hasil:
+------------------------------------------------- ----------+| STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s') |+-------------- ------------------------------------------+| 1999-12-31 09:30:17 |+-------------------------------------- ------------------+Format String Specifier
Penentu berikut dapat digunakan dalam format string. Selain itu, Anda juga dapat menggunakan string literal dalam format string.
Specifier | Deskripsi |
---|---|
%a | Singkat nama hari kerja (Sun ..Sat ) |
%b | Nama bulan disingkat (Jan ..Dec ) |
%c | Bulan, numerik (0 ..12 ) |
%D | Hari dalam sebulan dengan akhiran bahasa Inggris (0th , 1st , 2nd , 3rd , …) |
%d | Hari dalam sebulan, numerik (00 ..31 ) |
%e | Hari dalam sebulan, numerik (0 ..31 ) |
%f | Mikrodetik (000000 ..999999 ) |
%H | Jam (00 ..23 ) |
%h | Jam (01 ..12 ) |
%I | Jam (01 ..12 ) |
%i | Menit, numerik (00 ..59 ) |
%j | Hari dalam setahun (001 ..366 ) |
%k | Jam (0 ..23 ) |
%l | Jam (1st ..12 ) |
%M | Nama bulan (January ..December ) |
%m | Bulan, numerik (00 ..12 ) |
%p | AM atau PM |
%r | Waktu, 12 jam (hh:mm:ss diikuti oleh AM atau PM ) |
%S | Detik (00 ..59 ) |
%s | Detik (00 ..59 ) |
%T | Waktu, 24 jam (hh:mm:ss ) |
%U | Minggu (00 ..53 ), di mana hari Minggu adalah hari pertama dalam seminggu; WEEK() modus 0 |
%u | Minggu (00 ..53 ), di mana Senin adalah hari pertama dalam seminggu; WEEK() mode 1 |
%V | Minggu (01 ..53 ), di mana hari Minggu adalah hari pertama dalam seminggu; WEEK() modus 2; digunakan dengan %X |
%v | Minggu (01 ..53 ), di mana Senin adalah hari pertama dalam seminggu; WEEK() modus 3; digunakan dengan %x |
%W | Nama hari kerja (Sunday ..Saturday ) |
%w | Hari dalam seminggu (0 =Minggu..6 =Sabtu) |
%X | Tahun untuk minggu di mana hari Minggu adalah hari pertama dalam seminggu, numerik, empat digit; digunakan dengan %V |
%x | Tahun untuk minggu, di mana Senin adalah hari pertama dalam seminggu, numerik, empat digit; digunakan dengan %v |
%Y | Tahun, numerik, empat digit |
%y | Tahun, numerik (dua digit) |
%% | Sebuah % literal karakter |
% | x , untuk setiap “x ” tidak tercantum di atas |