用MySQL查询两个日期

时间:2015-12-17 16:04:46

标签: php mysql

我正在尝试获取数据库中包含两个日期之间的所有行。当我在2013-05-01和今天的日期搜索会议时,我没有得到任何结果,但是当我在没有WHERE子句的情况下搜索时,我看到今天有两个记录。我想,因为日期是DATETIME,我会尝试将它们作为日期投射,但这似乎不起作用。

我的功能如下:

function meeting_reports($connection, $to, $from)
{
    $status = array();
    $sql = 
      $connection->query (
        "SELECT `meeting_id`,`visibility`,`meeting_start` 
         FROM `details` 
         WHERE DATE(`meeting_start`) BETWEEN '{$from}' AND '{$to}'"
    );
    $status["total_meetings"] = 0;
    $status["cancelled_meetings"] = 0;
    if($sql->num_rows > 0)
    {
        while($results = $sql->fetch_assoc())
        {
            if($results["visibility"]==0)
            {
                $status["total_meetings"]++;                
            }
            elseif($results==1)
            {
                $status["total_meetings"]++;                
            }
            elseif($results["visibility"]==2)
            {
                $status["total_meetings"]++;                
            }
            elseif($results["visibility"]==3)
            {
                $status["cancelled_meetings"]++;                
            }
        }
    }
    return $status;
}

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我在这里看到几个问题。 您需要澄清您的数据类型是日期还是日期时间。假设日期时间。 如果您正在寻找在特定日期发生的会议, 如果x = y,则无法搜索x和y之间的事件。之间没有任何关系 它。如果您使用的是日期时间日期类型,请将00:00:00连接到您的开始日期 和你的结束日期23:59:59,现在你有一个有效的范围,包括有关日期的有效时间。或者对于单日期搜索,之间做什么?和? +间隔1天,并通过日期两次'12 -25-2015 00:00:00'

另外,您在查询中直接使用字符串,这可以打开您 sql注入攻击。对绑定参数进行谷歌搜索,永远不要使用 sql查询中的变量再次发生。

答案 1 :(得分:0)

试试这个

this.wait(5000, function(){
    this.scrollToBottom();
    processPage();
});