2012-07-17 41 views
5

Tôi đang sử dụng MySQL và cột bảng của tôi date là DATETIME loạilàm thế nào để so sánh DateTime Cột với Chỉ ngày không có thời gian

Nhưng tôi muốn so sánh chỉ ngày không có thời gian ngày nay

 $today = date("Y-m-d", time()); 

NẾU tôi so sánh ngày sử dụng phương pháp trên nó luôn luôn sai.

$this->update(" 
UPDATE `stats_tracker` 
SET 
    `user_agent`='$this->visitor_user_agent' , 
    `referrer`='$this->referrer_page' , 
    `page_views`='$page_views' 
WHERE 
    `visitor_ip`='$this->visitor_ip' 
    AND `page`='$this->this_page' 
    AND `date`='$today'"); 

Vui lòng giúp tôi tôi không phải là lập trình viên mySQL tốt.

Trả lời

18

có một hàm mysql gọi là NGÀY đó trích xuất các phần ngày của một biểu thức ngày tháng hoặc datetime

AND DATE(`date`)='$today' 

chỉnh sửa: hãy cẩn thận, như đã nói trong các ý kiến ​​dưới đây, việc sử dụng điều này sẽ bỏ qua chỉ mục trên trường datetime. Bạn nên sử dụng thay vì:

AND date BETWEEN '$today 00:00:00' AND '$today 23:59:59' 
+1

Bạn không nên sử dụng điều này vì nó sẽ giết chỉ mục trên cột ngày làm chậm truy vấn – Mojtaba

+0

Tôi không chắc chắn , những gì bạn sẽ đề nghị để không "giết chỉ số"? – nico

+1

bạn cần phải so sánh cột ngày sử dụng giữa hàm giả sử bạn muốn hàng cho tháng 1 năm 2013 bạn cần phải làm: ngày giữa '2013-01-01 00:00:00' và '2013-01-01 23:59:59 ' – Mojtaba

0
date_format('%Y-%m', time()) 

có lẽ là chức năng bạn cần sử dụng để so sánh.

+0

đó sẽ không giúp đỡ, vì entry datetime không đầy đủ sẽ tự động được hoàn thành vào mysql giả bán thời gian = 0, vì vậy nó sẽ phù hợp với chỉ trên nửa đêm, không phải trên những thời điểm khác trong ngày – Marki555

+0

Bạn sử dụng sai hướng cho các tham số: theo tài liệu [DATE_FORMAT (ngày, định dạng)] (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format) – R3tep

1

Bạn có thể sử dụng datediff chức năng như thế này:

AND datediff(`date`, '$today') = 0 
+0

không may điều này cũng không sử dụng chỉ mục trên cột 'ngày' (ít nhất không phải trên mysql 5.1) – Marki555

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