我有一个查询,查找4月1日到4月30日之间的所有记录,如下所示:
SELECT *
FROM `ar_videos`
WHERE created
BETWEEN '2013-04-01'
AND DATE_ADD( '2013-04-01', INTERVAL 1
MONTH )
每当我运行查询时,它会显示五月而不是四月的记录。我的查询出了什么问题?
答案 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-01
和2013-04-30
之间的内容。请注意,BETWEEN
最多包含范围的结尾。