Làm thế nào để sử dụng toán tử lớn hơn với ngày?


106

Không biết chuyện gì đang xảy ra ở đây. Đây là truy vấn, ngay từ phpMyAdmin:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

Nhưng tôi luôn nhận được tất cả các bản ghi trong bảng được trả về, bao gồm cả những bản ghi có ngày bắt đầu 2012-11-01. Đưa cái gì?


1
Cột start_date của bạn là loại ngày tháng hay dấu thời gian?
Shamis Shukoor

Câu trả lời:


190

bạn đã kèm start_datetheo một dấu ngoặc kép khiến nó trở thành chuỗi, hãy sử dụng backtickthay thế

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';

1
điều gì xảy ra nếu dấu thời gian của nó?
ichimaru

Cần lưu ý rằng MySQL có vẻ hơi kén chọn định dạng ngày tháng; trong khi 2019/02/08 21:04:07 hoặc 2019-02-08 21:04:07 tạo ra kết quả mong đợi, 02-08-2019 21:04:07, sử dụng định dạng ngày của Hoa Kỳ, tạo ra một mạng lưới rộng hơn nhiều .
David A. Gray,

22

Trong câu lệnh của bạn, bạn đang so sánh một chuỗi có tên start_date với thời gian.
Nếu start_date là một cột, nó phải là

 
  SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';
 

(không có dấu nháy đơn) hoặc


SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(có dấu gạch ngược).

Hi vọng điêu nay co ich.



2

Trong trường hợp của tôi, cột của tôi là ngày giờ nó liên tục cung cấp cho tôi tất cả các bản ghi. Những gì tôi đã làm là bao gồm thời gian, xem ví dụ dưới đây

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';

0

Tôi đã thử nhưng ở trên không hoạt động sau khi nghiên cứu tìm thấy giải pháp bên dưới.

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

Tham khảo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.