Serahkan pada fungsi yang lebih sederhana s. DATE()
mengembalikan bagian tanggal dari string dalam format YYYY-MM-DD:
SELECT DATE(birthday) FROM `test`
Hasil:
2004-12-25
2004-12-25
1994-12-25
1994-12-01
Alasan kode Anda tidak berfungsi adalah karena STR_TO_DATE()
mengharapkan format input dan output yang sama, mis. STR_TO_DATE('2014-08-29', '%Y-%m-%d')
. Lihat contoh dalam dokumentasi
. Fungsi ini sebagian besar digunakan untuk mengonversi tanggal atau waktu dari satu format ke format lainnya, di mana format aslinya adalah sesuatu dari luar MySQL dan Anda ingin mengimpor data ke format tanggal MySQL misalnya - dalam hal ini, Anda akan tahu apa yang asli format tanggalnya adalah.
Contoh:
SELECT STR_TO_DATE('20041225', '%Y-%m-$d'); -- null - formats don't match
SELECT STR_TO_DATE('2004-12-25', '%Y-%m-%d'); -- 2004-12-25 - formats match