2017-03-04 126 views
1

我有这个疑问:查询没有返回预期的结果

SELECT * FROM Sales 
WHERE (Date BETWEEN '2017-01-01' AND '2017-02-28') 
    AND (ID="Search" OR Product="Search"); 

应该返回要么ID OS产品等于搜索那些2日期间仅销售,但它的返回是这些日期即使之间的所有结果没有标识或产品=搜索,我不明白为什么

编辑

样本数据

ID  Date   Product 
1  2017-01-11 Product A 
2  2017-02-01 Product C 
3  2017-02-05 Product B 
4  2017-03-01 Product A 

如果我的查询是

SELECT * FROM Sales 
WHERE (Date BETWEEN '2017-01-01' AND '2017-02-28') 
AND (ID="Product C" OR Product="Product C"); 

我期待

ID  Date   Product 
2  2017-02-01 Product C 

但它返回提前

+0

请出示一些样本数据,否则我们不会是能够理解你的问题。 – ekad

+3

您的查询应该返回您所期望的。你确定你已经正确地转录了查询吗? –

+2

您确定您将date列保存为datetime数据类型而不是字符串吗? – Utsav

回答

1

ID  Date   Product 
1  2017-01-11 Product A 
2  2017-02-01 Product C 
3  2017-02-05 Product B 

由于这是没有问题的。例如,

我的表

+----+------+---------------------+ | id | name | create_at | +----+------+---------------------+ | 1 | 1 | 2017-03-04 11:06:25 | | 2 | 2 | 2017-03-04 11:09:27 | | 3 | 4 | 2017-03-04 11:06:56 | +----+------+---------------------+

我的SQL

SELECT * FROM test WHERE (create_at BETWEEN '2017-03-04 11:06:00' AND '2017-03-04 11:10:00') AND (id="2" OR name="2");

我的结果

+----+------+---------------------+ | id | name | create_at | +----+------+---------------------+ | 2 | 2 | 2017-03-04 11:09:27 | +----+------+---------------------+