2015-04-17 34 views
0

我的选择查询是这样的我在我的“processbackup”表中有记录在这个日期范围内,但它仍然没有考虑日期范围,因此我得到零行。日期范围不是在mysql中的收货人

SELECT 
    DATE_FORMAT(processDate,'%d-%m-%Y') AS processDate, 
    DATE_FORMAT(rDate,'%d-%m-%Y') AS rDate, 
    designMaster.dNo, 
    processbackup.desWet, 
    reciveWet, 
    item.itemNm, 
    processbackup.workerId 
    FROM processbackup 
    LEFT JOIN designMaster 
    ON designMaster.designMasterId = processbackup.designMasterId 
    LEFT JOIN item AS i 
    ON i.itemId = designMaster.itemId 
    LEFT JOIN item 
    ON item.itemId = designMaster.itemId 
WHERE processbackup.workerId = 1 
    AND (processDate BETWEEN '2015-04-04' AND '2015-04-14') 
+0

如果您删除processDate的限制,您会得到任何结果吗? –

+0

是@MarkLeiber –

+0

有两个问题:processDate的数据类型是什么?如果您将范围更改为2015-04-01至2015-04-30,您会得到任何结果吗? –

回答

1

查询没有问题。

运行它:

SELECT processDate 
    FROM processbackup 
    LEFT JOIN designMaster 
    ON designMaster.designMasterId = processbackup.designMasterId 
    LEFT JOIN item AS i 
    ON i.itemId = designMaster.itemId 
    LEFT JOIN item 
    ON item.itemId = designMaster.itemId 
WHERE processbackup.workerId = 1 
    AND (processDate BETWEEN '2015-04-04' AND '2015-04-14') 

看的日期返回。如果他们不在2015-04-04和2015-04-14之间,您将无法获得结果。

请注意,如果processDate是日期时间,则结果将不包括2015-04-14的值。您需要在WHERE子句中包含时间或将其更改为2015-04-15。

+0

完成此查询谢谢.. –

0

您应该将processDate放入HAVING子句中,而不是放在WHERE中,因为您的值是从select中计算出来的。

+0

with HAVING give我相同的结果.. –

+0

请提供您的数据集和架构 – Andriy