Format Anda pada dasarnya bukan format yang dapat diurutkan untuk memulai - Anda membandingkan string , dan string "28-10-2012" adalah lebih besar dari "02-11-2012".
Sebaliknya, Anda harus membandingkan tanggal sebagai tanggal , lalu hanya mengonversinya ke format target Anda untuk keluaran.
Coba ini:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
(Input harus selalu dalam bentuk nilai tahun-bulan, sesuai dokumentasi .)
Perhatikan bahwa jika starttime
adalah DATETIME
, Anda mungkin ingin mempertimbangkan untuk mengubah kueri untuk menghindari konversi berulang. (Pengoptimal mungkin cukup pintar untuk menghindarinya, tetapi perlu diperiksa.)
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
(Perhatikan bahwa tidak biasa memformat tanggal sebagai d-m-Y
untuk memulai - akan lebih baik menggunakan y-M-d
secara umum, menjadi standar ISO-8601 dll. Namun, kode di atas melakukan apa yang Anda minta dalam pertanyaan.)