2015-08-24 116 views
1

我正在尝试检索两个日期之间的所有记录,并且MySQL查询正在带回完全不同日期的记录。MySQL返回两个日期之间的所有记录

我查询

SELECT datecreated FROM TABLE_COMPLAINTS WHERE datecreated BETWEEN '01/08/2015' AND '24/08/2015' 

从查询结果是这样的:

enter image description here

正如你可以告诉返回的日期是不是在SQL查询中指定的边界。

我的问题是我该如何解决这个问题?

+1

什么数据类型是'datecreated'列? – Phil

+0

数据类型为DateTime – thomasjcf21

+0

@ thomasjcf21:你的接受答案如何给出错误的输出...... !!退房http://sqlfiddle.com/#!9/eb08c/3 – seahawk

回答

1

试试这个

SELECT datecreated FROM TABLE_COMPLAINTS WHERE datecreated BETWEEN 
to_date('01/08/2015','MM/DD/YYYY') AND to_date('24/08/2015','MM/DD/YYYY') 

解决方案2

SELECT datecreated FROM TABLE_COMPLAINTS WHERE datecreated >='01/08/2015' AND datecreated <= '24/08/2015' 

解决方案3

SELECT datecreated FROM TABLE_COMPLAINTS 
where 
    datecreated >='01/08/2015 06:42:10' and datecreated <='24/08/2015 06:42:50'; 

原谅我我没有看到时间部分我认为它是一个不同的列。这应该工作(我有时间现场混乱,看看是否有您的所有时间都在12个一差)

+0

用函数to_date响应的查询不存在。 – thomasjcf21

+0

这一个应该这样做:SELECT datecreated FROM TABLE_COMPLAINTS WHERE datecreated> ='01/08/2015'和datecreated <= '24/08/2015' –

+0

查询返回的结果与上图完全相同。 – thomasjcf21

3

给这个格式的尝试:

SELECT datecreated 
FROM TABLE_COMPLAINTS 
WHERE datecreated BETWEEN '2015-08-01' AND '2015-08-24' 

SELECT datecreated 
FROM TABLE_COMPLAINTS 
WHERE datecreated BETWEEN 
STR_TO_DATE('01/08/2015','%d-%m-%Y') 
and STR_TO_DATE('24/08/2015','%d-%m-%Y'); 
+0

它返回零记录对不起。 – thomasjcf21

+0

翻转月份然后 – Drew

+0

仍然没有工作抱歉。 – thomasjcf21

1
SELECT datecreated 
FROM TABLE_COMPLAINTS 
WHERE datecreated >= '2015-08-01 00:00:00' 
AND datecreated < '2015-08-25 00:00:00' 
; 

你可以做BETWEEN '2015-08-01 00:00:00' AND '2015-08-24 23:59:59';但如果MySQL开始在这些领域存储更精确的数据,它可能会在将来引发问题。

1

试试这个:

SELECT datecreated FROM TABLE_COMPLAINTS WHERE CAST(datecreated as DATE) BETWEEN '20150801' AND '20150824' 

这是假设你的dateCreated会列是DateTime类型

1
select * from TABLE_COMPLAINTS where date(datecreated) 
between STR_TO_DATE('01/08/2015',"%d/%m/%Y") and 
STR_TO_DATE('24/08/2015',"%d/%m/%Y") ; 
相关问题