2015-06-20 76 views
1

我有这个疑问:的Sql之间有两个

SELECT * 
FROM some_table 
WHERE id != 1 AND 
     (event_date BETWEEN '20/06/2015' AND '01/07/2015') 
ORDER BY the_date 

结果为0。 如果我尝试此查询:

SELECT * 
FROM events 
WHERE id != 1 AND 
     (event_date BETWEEN '20/06/2015' AND '29/06/2015') 
ORDER BY the_date 

它的工作原理。

两个月(Juny和7月)之间的区别是什么问题。

谢谢。

+0

,并在第二个你是从'events'选择:假设event_datedate列,使用str_to_date的字符串文字转换为日期。这可能是相关的吗? –

+0

不,只是错误。 –

回答

0

在ISO标准的YYYY-MM-DD格式写日期常量:

SELECT * 
FROM some_table 
WHERE id != 1 AND 
     event_date BETWEEN '2015-06-20' AND '2015-07-01' 
ORDER BY the_date 
+0

但我的数据库中的日期是这种格式:10/07/2015 –

+0

@DorBenZaken。 。 。你应该使用'date'作为在数据库中存储日期的数据类型。输出表示不重要。如果您使用字符串存储日期,则修复数据。 –

0

MySQL使用下列数据类型保存日期:

DATE - 格式YYYY-MM-DD

DATETIME - 格式:YYYY-MM-DD HH:MI:SS

TIMESTAMP - 格式:YYYY-MM-DD HH:MI:SS

尝试更改日期格式

1

看起来像是按照字典顺序比较这些日期。在你从`some_table`选择第一个查询

SELECT * 
FROM  some_table 
WHERE id != 1 AND 
     (event_date BETWEEN STR_TO_DATE('20/06/2015', '%d/%m/%Y') AND 
          STR_TO_DATE('01/07/2015', '%d/%m/%Y')) 
ORDER BY the_date 
+0

不工作 - 仍为0。 –