Php 两个datetime列之间的Mysql

Php 两个datetime列之间的Mysql,php,mysql,datetime,between,Php,Mysql,Datetime,Between,我有以下代码,但似乎没有产生预期的结果: $date_from = '2012-04-27 18:19:33'; $date_to = '2012-05-29 00:59:57'; $database->connect(); $ancestors = mysql_query(' SELECT * FROM ' . $database->db_prefix . 'comments e WHERE e.creat

我有以下代码,但似乎没有产生预期的结果:

$date_from = '2012-04-27 18:19:33';
$date_to = '2012-05-29 00:59:57';

$database->connect(); 
        $ancestors = mysql_query('
            SELECT * FROM ' . $database->db_prefix . 'comments e
                WHERE e.created BETWEEN "' . $date_from . '" AND "' . $date_to . '" AND   
                    e.ancestors = "' . $comment["id"] . '" AND e.user_id != "' . $user->user_object["id"] . '" AND
                        NOT EXISTS
                        (
                            SELECT null 
                            FROM ' . $database->db_prefix . 'notifications d
                            WHERE  d.target_id = e.id
                        )
                        ORDER BY e.created DESC
        ', $database->connection_handle);
    $database->close();
这可能是个愚蠢的错误。。但是,当我不确定select语句和使用的日期之间是否有效时,我发现很难确定

任何帮助都会很好。我一直在搜索,我所做的似乎是正确的,因此混淆

编辑//

我在date_from和date_to日期之间有很多评论,通知表中没有通知(不存在部分)。。。所以基本上,我应该得到大约25条回复。。。相反,我只收到一条回复,日期为2012-05-29 00:23:39

编辑//

是因为你只能比较一个日期和一个日期吗。。一次又一次?为了做到这一点,我应该如何调整mysql

编辑//

这显然是函数之间出了问题。我真的不确定它到底出了什么问题

  • 你能返回两个日期之间的记录吗
  • 你能举个例子吗
  • 编辑// 问题已经解决了。这与查询无关,因此可以肯定地说这是正确的方法。我把约会范围搞得乱七八糟。谢谢你们的帮助

    在it状态中,当使用带有日期或时间值的between时,您应该使用,因此您的查询应该编写如下

    WHERE e.created BETWEEN CAST("' . $date_from . '" AS DATETIME) AND CAST("' . $date_to . '" AS DATETIME) ...
    

    如果您在这段时间内没有得到预期的结果,这可能会解决您的问题。

    我遇到了相同的问题,我认为您可能需要应用此解决方案:

    $from = $_GET['from'];
    $to = $_GET['to'];
    include("connect.php");
    $link=Connection();
    $query = "SELECT * FROM records WHERE date_time BETWEEN '$from' AND '$to'";
    $result=mysql_query($query,$link);
    $list = array();
    if($result === FALSE) {
        echo "No data";
    }
    

    这里的诀窍是单引号,您需要将变量放入该引号中,让mysql处理它

    您的代码生成了什么结果?你期望得到什么样的结果?您的MySQL数据库中创建的
    e.created
    字段的格式是什么?您为什么需要
    CAST
    ?您可以让PHP为您进行转换;通常,
    CAST
    应用于数据库中已有的字段:)如下所示:)是的,测试我自己,这似乎没有什么区别,我不知道为什么文档中会说CAST是推荐的。我已经尝试过WHERE e.created>=“.$date\u from.”和e.created在这种情况下,我通常只运行查询而不使用WHERE语句,然后一个接一个地添加不同的部分,以确保它按照我的预期进行过滤。因此,只需在where语句中指定日期部分,而不指定其他部分,然后添加其他部分。您可能会发现where语句中的一个部分与您实际尝试筛选的内容不符。我很确定这会导致性能差异。。。没有强制转换,它是一个字符串比较,但有强制转换,它是一个数字比较。但是,至少在日期格式下,您会得到相同的结果。