我有以下查询,基本上我想要做的是选择今天和未来+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
答案 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