2011-09-07 43 views
8

Cảm ơn bạn đã dành thời gian xem câu hỏi của tôi.Chọn 7 ngày qua từ Now() trong MYSQL

Tôi có truy vấn MYSQL này:

foreach($wpdb->get_results(
    "SELECT wp_pixelcart_calendar.datefield AS DATE, 
    IFNULL(SUM(wp_pixelcart_daily_sales.quantity),0) AS total_sales 
    FROM wp_pixelcart_daily_sales RIGHT JOIN wp_pixelcart_calendar ON (DATE(wp_pixelcart_daily_sales.order_date) = wp_pixelcart_calendar.datefield) 
    WHERE (wp_pixelcart_calendar.datefield BETWEEN (SELECT MIN(DATE(order_date)) FROM wp_pixelcart_daily_sales) AND (SELECT MAX(DATE(order_date)) FROM wp_pixelcart_daily_sales)) 
    GROUP BY DATE" 
) as $key => $row) { 

echo "<br>". $row->DATE . "',". $row->total_sales . "],"; 

} 

Tôi đang gặp một thời gian khó khăn để hiển thị trong bảy ngày qua từ nay trong truy vấn, ive được chơi đùa với:

BETWEEN (SELECT MIN(DATE(order_date)) FROM wp_pixelcart_daily_sales) AND (SELECT MAX(DATE(order_date)) FROM wp_pixelcart_daily_sales)) 

Để này:

BETWEEN NOW() FROM wp_pixelcart_daily_sales) AND DATE_ADD(NOW(), INTERVAL 7 DAY) FROM wp_pixelcart_daily_sales)) 

Nhưng điều này dường như không hiệu quả.

Bất kỳ trợ giúp nào được đánh giá cao.

Cảm ơn

Trả lời

18

nếu điều này không được làm việc, trở về 0 kết quả, hãy xem xét trao đổi phạm vi ngày:

BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW() 
+0

Ive đã cố gắng này nhưng dường như không tạo ra bất kỳ kết quả nào \t WHERE (wp_pixelcart_calendar.datefield GIỮA NGAY BÂY GIỜ) và DATE_SUB (NGAY BÂY GIỜ() , INTERVAL 7 DAY)) – MattStrange

+0

Nếu bạn loại bỏ điều này khỏi mệnh đề WHERE, có bất kỳ kết quả nào được trả về không? Nếu vậy, có phải ngày của những kết quả đó trong 7 ngày qua không? – Trevor

+0

Tôi đã xóa WHERE và để lại GIỮA NGAY BÂY GIỜ() ... và kết quả sẽ hiển thị nhưng không hiển thị trong bảy ngày qua. Nếu nó giúp tôi đang sử dụng mã này từ hướng dẫn này http://www.richnetapps.com/using-mysql-generate-daily-sales-reports-filled-gaps/ – MattStrange

1
WHERE order_date <= NOW() AND order_date >= DATE_SUB(order_date, INTERVAL 7 DAY) 
+1

Hãy quan tâm! Câu trả lời này là INCORRECT. Nó phải là 'DATE_SUB (NOW()' – thelawnmowerman

5

Bạn chỉ có thể viết:

SELECT * FROM table WHERE date_field > DATE_SUB(NOW(), INTERVAL 7 DAY) 
Các vấn đề liên quan