Định dạng của bạn về cơ bản không phải là định dạng có thể sắp xếp để bắt đầu - bạn đang so sánh chuỗi và chuỗi "28-10-2012" is lớn hơn "02-11-2012".
Thay vào đó, bạn nên so sánh ngày dưới dạng ngày , và sau đó chỉ chuyển đổi chúng thành định dạng mục tiêu của bạn cho đầu ra.
Hãy thử điều này:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
(Đầu vào phải luôn ở dạng giá trị năm-tháng, theo tài liệu .)
Lưu ý rằng nếu starttime
là DATETIME
, bạn có thể muốn xem xét việc thay đổi truy vấn để tránh chuyển đổi lặp lại. (Trình tối ưu hóa có thể đủ thông minh để tránh nó, nhưng nó đáng để kiểm tra.)
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
(Lưu ý rằng việc định dạng ngày là d-m-Y
là điều bất thường để bắt đầu - sẽ tốt hơn nếu sử dụng y-M-d
nói chung, là tiêu chuẩn ISO-8601, v.v. Tuy nhiên, đoạn mã trên thực hiện những gì bạn yêu cầu trong câu hỏi.)