MYSQL如何在SELECT之间做一个日期?

时间:2014-01-07 03:36:02

标签: php mysql date

我有以下查询,基本上我想要做的是选择今天和未来+3天之间的end_date,但是我的查询给了我非感觉结果,包括未来3个月的日期?我在这里做错了什么?我尝试了之间的日期,但也没有工作

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

试一试。

答案 2 :(得分:0)

您的end_date值是DATETIME吗?如果是这样,你最好避免使用BETWEEN条款。

试试这个。

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

你这样做(由<而不是<=选择范围的结尾,并且由于这个原因,范围延长了一天:BETWEEN范围的结束离开了你所有的除了午夜之外的结束日期的时间。

答案 3 :(得分: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