2014-01-07 24 views
0

我有下面的查詢,基本上我想要做的就是選擇今天和+3天之間的end_date,但是我的查詢給了我無意義的結果,包括將來甚至3個月的日期?我在這裏做錯了什麼?我也試過,但沒有工作過MYSQL如何在SELECT之間做一個日期?

SELECT DATE_ADD(ccs.end_date, INTERVAL +3 
DAY) , DATE_FORMAT(NOW() , '%Y-%m-%d') , ccs. * , cc. * 
FROM `customers_closure` cc, `customers_closure_service` ccs 
WHERE cc.queue_id = '1' 
AND ccs.closure_id = cc.id 
AND (
ccs.end_date >= DATE_FORMAT(NOW() , '%Y-%m-%d') 
AND ccs.end_date <= DATE_ADD(ccs.end_date, INTERVAL +3 
DAY) 
) 
ORDER BY cc.id DESC 
LIMIT 0 , 30 

回答

0

之間的日期我得到它排序

SELECT ccs . * , cc . * 
        FROM `customers_closure` cc, `customers_closure_service` ccs 
        WHERE cc.queue_id = '1' 
        AND ccs.closure_id = cc.id 
        AND 
        (
        ccs.end_date BETWEEN CURDATE() + INTERVAL +3 DAY AND CURDATE() 
        ) 

        ORDER BY cc.id DESC 
0
SELECT DATE(ccs.end_date), ccs.*, cc. * 
FROM `customers_closure` cc, `customers_closure_service` ccs 
WHERE cc.queue_id = 1 
AND ccs.closure_id = cc.id 
AND DATE(ccs.end_date) BETWEEN DATE(NOW()) AND DATE(DATE_ADD(NOW(), INTERVAL +3 DAY)) 
ORDER BY cc.id DESC 
LIMIT 0 , 30 

試試這個。

+0

爲什麼更大的價值首先 – zerkms

+0

@zerkms啊,是固定的感謝?。! :) – hjpotter92

+0

'DATE(ccs.end_dat e)'在表達式中使用列可防止任何索引優化 – zerkms

0

您的end_date值DATETIMEs?如果是這樣,你最好避免使用BETWEEN子句。

試試這個。

... ccs.end_date >= CURDATE() 
AND ccs.end_date < CURDATE() + INTERVAL 4 DAY 

你做到這一點(與由<代替<=併爲此每天延伸的範圍選擇範圍的結束:你的範圍之間的葉子結束甌結束的所有時間。除了午夜

0

日期1天只需添加到您想要檢索數據的通緝天像下面的代碼:

SELECT DATE_ADD(ccs.end_date, INTERVAL +4 
DAY) , DATE_FORMAT(NOW() , '%Y-%m-%d') , ccs. * , cc. * 
FROM `customers_closure` cc, `customers_closure_service` ccs 
WHERE cc.queue_id = '1' 
AND ccs.closure_id = cc.id 
AND (
ccs.end_date >= DATE_FORMAT(NOW() , '%Y-%m-%d') 
AND ccs.end_date < DATE_ADD(NOW(), INTERVAL + 4 
DAY) 
) 
ORDER BY cc.id DESC 
LIMIT 0 , 30 
相關問題