2012-04-18 42 views
7

Làm cách nào để có được các hàng trong một bảng mà ngày hôm nay nằm giữa (bao gồm) hai cột DATE của hàng đó? Ví dụ, phải mất hai cột này của một bảng:CHỌN các hàng MySQL trong đó ngày hôm nay là giữa hai cột DATE

enter image description here

Làm thế nào tôi có thể nhận được các hàng đầu tiên và thứ hai vào ngày 10 tháng Tư, hoặc hàng thứ 3 vào ngày 25 (bao gồm, như tôi đã nói) ?

Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn trước!

Trả lời

13

Bạn sẽ tìm thấy rất nhiều người sử dụng giữa toán tử, nhưng tôi thích sử dụng toán tử AND đơn giản hơn.

Tôi làm điều đó bởi vì mặc dù giữa toán tử IS được bao gồm, ngày đơn giản (2012-04-10) có thể được tính là nửa đêm và do đó sẽ không bao gồm.

Vì vậy, điều này sẽ chỉ làm việc tốt và sẽ luôn bao gồm ranh giới của phạm vi ngày:

Tuyên Bố

SELECT * FROM table WHERE from_date >= '2012-04-10' AND to_date <= '2012-04-10' 
+4

Hoạt động tuyệt vời, ngoại trừ bạn có cá sấu tìm kiếm một cách sai lầm :) – JJJollyjim

+0

Rất tiếc, xin lỗi về điều đó :) – Bill

6

Chỉ cần sử dụng SQL now() chức năng để so sánh các cột ngày như vậy:

SELECT * from table where now() >= from_date and now() <= to_date 
+1

Sử dụng CURDATE() thay vào đó, Lưu ý rằng nếu bạn sử dụng NOW() nó bao gồm thông tin thời gian và có thể dẫn đến loại trừ một số ngày, tức là hàm kế tiếp trả về false (0): chọn "2010-01-01 14:00:00" <= "2010-01-01" – CesarC

+0

nhờ @CesarC :) –

15

Bạn có thể thêm một điều kiện như sau

DATE(NOW()) between date1 and date2 
+0

Điều đó là giải pháp cho vấn đề của tôi, cảm ơn! –

+0

cũng là giải pháp – erwinnandpersad

Các vấn đề liên quan