繁体   English   中英

两个日期之间的 MySQL select 未按预期工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM