在php中查找缺少的日期

在php中查找缺少的日期,php,mysql,Php,Mysql,您好,我有两个文本框用于日期从和到。当我在两个文本框中都选择日期时,表示一个时间间隔,我想填写缺少的日期,这样我就可以查询表中的一些记录以及假设有的日期 2014-08-02 2014-08-08 2014-08-10 2014-08-11 2014-08-07 2014-08-12 或者是另一个约会,请帮帮我 <?php $from='2014-08-11'; $to='2014-09-10'; $query="SELECT * FROM s

您好,我有两个文本框用于日期
。当我在两个文本框中都选择日期时,表示一个时间间隔,我想填写缺少的日期,这样我就可以查询表中的一些记录以及假设有的日期

2014-08-02  
2014-08-08      
2014-08-10      
2014-08-11  
2014-08-07  
2014-08-12  
或者是另一个约会,请帮帮我

<?php
$from='2014-08-11'; 
$to='2014-09-10';

$query="SELECT * FROM stats WHERE Feeddate BETWEEN '2014-08-11' AND '2014-09-10'"; 
?>
$from='2014-08-11';
$to='2014-09-10';
$query=“从统计中选择Feeddate,其中Feeddate介于“$FROM”和“$to”之间,按Feeddate排序”;
$cursor=DateTime::createFromFormat('Y-m-d',$from);
$res=mysql\u query($query);
while($row=mysql\u fetch\u assoc($res))
{
$date=DateTime::createFromFormat('Y-m-d',$row['Feeddate']);
而($cursor!=$date)
{
echo“缺少日期:“$cursor->format('Y-m-d')。”
”; $cursor->modify(“+1天”); } $cursor->modify(“+1天”); }
没有测试它,但是类似这样的东西。您需要创建一个临时表,其中包含您要查找的范围内的一系列日期。例如2014-08-11至2014-09-10。这有一种方法:

那你就要对它提出质疑了

SELECT *
FROM x
(
     SELECT date 
     FROM dateseries
     WHERE date BETWEEN '2014-08-11' AND '2014-09-10'
) as x
WHERE NOT IN ( 
    SELECT date 
    FROM stats
    WHERE Feeddate BETWEEN '2014-08-11' AND '2014-09-10'
);

希望你能明白。要知道MySql在子查询优化方面很差劲,所以您可能希望将该子查询移动到联接。

不过我不太明白。假设您有
2014-08-11
2014-09-10
。“查找缺失日期”是什么意思?当我执行查询时,表中与日期相关的所有记录假设我在表中有2014-08-022014-08-08两条与此日期相关的记录,当我执行查询时,缺失日期将是2014-08-032014-08-042014-08-052014-08-062014-08-07您是指两者之间的日期吗?是的,从这两条记录之间我知道了我忘记更新或添加软件记录的确切日期据我所知,您希望生成一个日期列表,即
2014-08-03
2014-08-05
m,即
2014-08-03
2014-08-04
2014-08-05
。我的假设正确吗?
SELECT *
FROM x
(
     SELECT date 
     FROM dateseries
     WHERE date BETWEEN '2014-08-11' AND '2014-09-10'
) as x
WHERE NOT IN ( 
    SELECT date 
    FROM stats
    WHERE Feeddate BETWEEN '2014-08-11' AND '2014-09-10'
);