Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

so sánh ngày mysql với date_format

Đị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 starttimeDATETIME , 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.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xóa hàng mysql sau khi thời gian trôi qua?

  2. Cách thêm ràng buộc mặc định trong MySQL

  3. NHÓM MySQL THEO độ tuổi bao gồm các dải rỗng

  4. có điều kiện cập nhật khóa trùng lặp

  5. MySQL Lấy lại Thời gian Chèn Bản ghi Cũ?