2016-12-27 116 views
0

我目前使用的线以下,以获得最新选择数据范围

WHERE DATE (DateTime) BETWEEN '2016-12-19' AND '2016-12-23' 

12/12/2016 09:31 - 这是日期和时间格式

但它一直在恢复一切该表从2014年开始。

上面的语句似乎只适用于其简短的查询,但当我向SQL查询添加几行时似乎不起作用,它将提取表中的所有日期。

SELECT phone_number,system_outcome,DateTime 
FROM calls 
WHERE DATE (DateTime) BETWEEN '2016-12-19' AND '2016-12-23' 
AND system_outcome = 'ANSWER_MACHINE' 
GROUP BY phone_number 
HAVING count(Phone_number) > 6 
+1

你需要解释这个*似乎不工作*添加样本数据和预期结果把事情说清楚 –

+0

什么是列'DateTime'的数据类型? – leeyuiwah

+0

我不使用字段名称DateTime我刚刚选择了该字段以确保正确的日期被选中。 –

回答

0

您需要学会以正确的格式存储日期,而不是字符串。您可以使用date_format()解决您的where条款:

where date_format(left(date, 10), '%m/%d/%Y') between '2016-12-19' AND '2016-12-23' 

我也应该注意,如果你想要的电话号码,那么所有其他属性应该是一个聚集函数的参数。你说:

SELECT phone_number, system_outcome, group_concat(DateTime) 
FROM calls 
WHERE date_format(left(date, 10), '%m/%d/%Y') BETWEEN '2016-12-19' AND '2016-12-23' AND 
     system_outcome = 'ANSWER_MACHINE' 
GROUP BY phone_number, system_outcome 
HAVING count(Phone_number) > 6;