[英]MySQL select between two dates not working as expected
我正在尝试创建一个查询,它将 select 两个日期之间的所有日期
这是我的查询:
$query = "SELECT DISTINCT * FROM D1,D2
WHERE D1.DATE_ADDED BETWEEN '$date1' AND '$date2' AND D1.D1_ID = D2.D2_ID";
问题是,它没有返回任何东西,但也没有产生错误
所以我试着像这样直接将它输入到 phpMyAdmin
SELECT DISTINCT * FROM D1,D2
WHERE D1.DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'
AND D1.D1_ID = D2.D2_ID`
然后像这样
SELECT DISTINCT * FROM D1,D2
WHERE D1.DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'
像这样
SELECT * FROM D1
WHERE DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'
我只是得到
MySQL 返回一个空结果集(即零行)。 (查询耗时 0.0003 秒)
是的,我的表存在,列也存在:)
在第一种情况下,缺少结果可能是由于内部连接。 为了使结果在集合中,它需要两个表中的记录,即。 除非 d2 在 d2_id 列中也有该 id,否则不会出现来自 d1 的记录。 要解决此问题,如果这对您的业务逻辑是正确的,请使用left join
。
但是,您的最后一个案例(没有连接)表明原因是第一个(左)表 d1 中缺少匹配的记录。
如果没有完整的数据集,我们无法进一步评论,因为您运行的所有代码都是完全有效的。
如果您总是想 select 整整一年,那么 select 会更容易,如下所示:
SELECT * FROM D1 WHERE YEAR(DATE_ADDED) = 2011;
请实现以下代码
SELECT DISTINCT * FROM D1,D2
WHERE D1.DATE_ADDED BETWEEN DATE_FORMAT('2011-01-01','%Y-%m-%d')
AND DATE_FORMAT('2011-12-12','%Y-%m-%d')
AND D1.D1_ID = D2.D2_ID`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.