MySQL:选择两个日期范围内的所有数据
Posted
技术标签:
【中文标题】MySQL:选择两个日期范围内的所有数据【英文标题】:MySQL: Select all data between range of two dates 【发布时间】:2014-04-17 09:20:58 【问题描述】:如何进行查询以选择两个日期之间的所有内容。
SELECT * FROM applications WHERE `datum` >='2013-11%' AND `datum`<='2014-04%';
我试图做类似的事情,但只返回一条记录是行不通的。 有人可以告诉我如何让它显示两个日期范围之间的所有内容。
Datum 的类型是 Datetime。 喜欢 2013-11-02 12:21:00
【问题讨论】:
datum
的数据类型是什么?
另外,您确定数据库中有多个条目应符合这些条件吗?
日期时间格式,例如2013-11-02 12:21:00
第 1 步是确保使用正确的日期时间字段,第 2 步是不要尝试应用用于 LIKE 的'%'
..
@Helpful 我很确定。
【参考方案1】:
使用between 语句,例如:
SELECT * FROM applications WHERE datum BETWEEN '2013-11-01' AND '2014-04-01';
您在查询中使用了通配符,所以只要弄清楚您想使用什么日期,您就可以摇滚乐了。
【讨论】:
实际上,OP 似乎想要整个四月,而不仅仅是第一天。此外,假设它是日期时间或时间戳列,您实际上只是得到“2014-04-01 00:00:00”,而不是一整天。 这只是给我一个记录。我知道怎么了。SELECT * FROM applications WHERE datum BETWEEN '2013-11-01 00:00:00' AND '2014-04-01 00:00:00';
你确定你确实有不止一排吗?
尼尔,谢谢它现在可以正常工作了,我输入了错误的结束日期。 :p【参考方案2】:
%
用于 like
搜索,适用于 (var)char 和 text 列。
SELECT * FROM applications WHERE `datum` >='2013-11-01' AND `datum`<='2014-04-31 23:59:59';
在 mysql 中,使用 31 作为一个月的上限是安全的,即使是 2 月也是如此。
【讨论】:
为什么不只是< '2015-05-01'
?无论如何,我认为考虑时间也很重要,如图所示(所以 +1)。
好吧,如果用户指定了一个给定的日期,不一定是月底,你的代码中是否有一些逻辑可以转换用户给出的日期,这样你就可以更方便地编写你的sql查询?我不这么认为...【参考方案3】:
试试这个:
.. WHERE datum >= '2012-01-01' AND datum <= '2012-12-31'
http://www.sqlfiddle.com/#!2/4b43b/2
【讨论】:
用 sqlfiddle 检查我的答案【参考方案4】:试试这个
$query="SELECT * FROM applications WHERE `datum` between '2013-11-01' AND '2014-04-01'";
或
$query="SELECT * FROM applications WHERE `datum` WHERE `datum` >= '2013-11-01' and `datum` <= '2014-04-01' ";
两者都在工作
【讨论】:
【参考方案5】:非常感谢,它现在可以工作了,我使用了错误的结束日期。
【讨论】:
以上是关于MySQL:选择两个日期范围内的所有数据的主要内容,如果未能解决你的问题,请参考以下文章