查询两个日期之间的记录无效

时间:2014-02-06 17:15:38

标签: mysql

我有一个查询,查找4月1日到4月30日之间的所有记录,如下所示:

SELECT * 
FROM  `ar_videos` 
WHERE created
BETWEEN  '2013-04-01'
AND DATE_ADD(  '2013-04-01', INTERVAL 1 
MONTH ) 

每当我运行查询时,它会显示五月而不是四月的记录。我的查询出了什么问题?

2 个答案:

答案 0 :(得分:0)

你得到了你所要求的:

mysql> select DATE_ADD('2013-04-01', INTERVAL 1 MONTH);
+------------------------------------------+
| DATE_ADD('2013-04-01', INTERVAL 1 MONTH) |
+------------------------------------------+
| 2013-05-01                               |
+------------------------------------------+

请记住,between是一种包容性比较,

foo BETWEEN bar AND baz

相同
(bar <= foo) AND (foo <= baz)

如果您只想要4月份的记录,可以尝试

WHERE (YEAR(datefield) = 2013) AND (MONTH(datefield) = 4)

WHERE (datefield >= '2014-04-01') AND (datefield < '2014-05-01')
                                                 ^--note, <, not <=

答案 1 :(得分:0)

您可能想要修复范围:

created BETWEEN '2013-04-01' AND DATE_SUB(DATE_ADD('2013-04-01', INTERVAL 1  MONTH), INTERVAL 1 DAY)

这会查找2013-04-012013-04-30之间的内容。请注意,BETWEEN 最多包含范围的结尾。