2012-03-15 29 views
5

Tôi có truy vấn này tìm kiếm kết quả từ cơ sở dữ liệu trong hai mươi phút qua, bây giờ tôi biết cách tra cứu theo giờ, ngày, v.v ... nhưng có thể tìm kiếm trở lại như nửa đêm của ngày hôm đó. vì vậy khi bao giờ truy vấn được chạy và những gì bao giờ thời gian nó chỉ nhìn lại như xa như nửa đêm?Mysql Truy vấn trở lại nửa đêm chỉ

SELECT * FROM ip_stats WHERE date >= (NOW() - INTERVAL 20 MINUTE) and ip='$ip' 

Đây là mã của tôi nhưng tôi có thể thay thế khoảng thời gian đó trong một khoảng thời gian cụ thể.

Mọi trợ giúp sẽ được đánh giá cao.

+0

bạn có thể sử dụng mysql date_format() và bây giờ() –

Trả lời

22

Nhìn lại đến nửa đêm của ngày hiện tại cũng giống như nhìn vào ngày hiện tại không có thành phần thời gian. Do đó, bạn có thể sử dụng DATE() để cắt bớt cột ngày giờ date thành chỉ phần ngày và so sánh nó với CURDATE().

SELECT * FROM ip_stats WHERE DATE(date) = CURDATE() and ip='$ip' 
+0

mà làm việc hoàn hảo cảm ơn bạn, tôi không biết tại sao tôi không nghĩ về điều đó. –

+0

Tôi nghĩ đây là giải pháp hoàn hảo để nhận hồ sơ từ ngày hiện tại. –

0

Chỉ cần làm cho cột date lớn hơn curdate (bắt đầu từ ngày này).

SELECT * FROM ip_stats 
WHERE date >= (NOW() - INTERVAL 20 MINUTE) 
and date > CURDATE() 
and ip='$ip' 
+1

bạn sẽ muốn có một> =, không a> – Jason

0

Bạn có thể sử dụng CURDATE() để có được hàng kể từ nửa đêm của ngày hiện tại:

SELECT * FROM ip_stats WHERE date >= CURDATE() and ip='$ip' 
1
SELECT * FROM ip_stats WHERE date >= (NOW() - INTERVAL 20 MINUTE) AND date >= CURDATE() and ip='$ip' 
0
SELECT * 
FROM ip_stats 
WHERE date >= GREATEST(NOW() - INTERVAL 20 MINUTE, CURRENT_DATE) 
AND ip = '$ip' 
Các vấn đề liên quan