2010-01-25 31 views
5

Làm cách nào để thực hiện điều này trong MySQL?MySQL - CHỌN Ngày nào <X

SELECT * FROM MyTable WHERE MyDateCol < TODAY() 

Tôi googled rất nhiều về chủ đề và không thực sự tìm thấy bất cứ điều gì ngoại trừ "nhìn vào ref ngày tháng MySQL" mà không giải thích ở trên một cách dễ dàng đủ.

Tôi biết tôi có thể làm những điều sau đây mà là kinda gián tiếp:

SELECT * FROM MyTable WHERE MyDateCol BETWEEN (0000-00-00) AND TODAY() 

Trả lời

4

Trong MySQL, bạn có curdate() funciton, mà sẽ giúp bạn có được ngày hôm nay.

Vì vậy, một cái gì đó như thế này nên làm:

select * 
from your_table 
where your_date_column < curdate() 


Trích dẫn trang của nhãn hiệu của chức năng đó:

Trả về ngày hiện tại như một giá trị trong định dạng 'YYYY-MM-DD' hoặc YYYYMMDD, tùy thuộc vào chức năng là được sử dụng trong một chuỗi hoặc ngữ cảnh số.


Và nếu bạn muốn so sánh với thời điểm hiện tại (và không chỉ ngày), bạn có thể sử dụng now() chức năng:

Trả về ngày hiện tại và thời gian như một giá trị ở định dạng 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS.uuuuuu

+0

Về định dạng số YYYYMMDD, sẽ 2010-Mar-27 trở thành 20.100.327 hoặc nó sẽ là giá trị gia tăng thập phân của 2040 –

+1

Tôi không có một máy chủ mà trên đó tôi có thể thử ngay bây giờ, nhưng xem xét hướng dẫn nói YYYYMMDD, tôi cho rằng bạn sẽ nhận được 20100327 và không có kết quả nào của việc bổ sung - điều này sẽ khó thực hiện. –

+0

Tôi đã xác minh điều này với máy chủ MySQL cục bộ của mình, nó sử dụng các số như 20100327 giúp dễ dàng so sánh. Bạn cũng có thể truyền ngày chuỗi trực tiếp đến một số để sử dụng nó để so sánh số .. '" 2010-03-27 "=>" 20100327 "=> 20100327' –

2
SELECT * FROM MyTable WHERE MyDateCol < CURDATE() 
1

Sử dụng NOW() chức năng:

SELECT * FROM MyTable WHERE MyDateCol < NOW() 
2

Nếu MySQL hỗ trợ SYSDATE, bạn nên sử dụng thay vì NOW() hoặc CURDATE(), vì nó là tiêu chuẩn hơn.

SELECT * FROM MyTable WHERE MyDateCol < SYSDATE; 
Các vấn đề liên quan