如何使用php比较mysql查询中的两个日期时间

时间:2014-09-17 07:54:27

标签: php mysql datetime

我想比较两个datetime变量,其中一个是当前server time,其中一个存储在mysql数据库中我运行这段简单的代码,它不会工作并说这是一个语法错误,我想知道我能做什么

    <?php include("includes/student_session.php");?>
<?php confirm_logged_in();?>
<?php include("includes/connection.php");?>
<?php 
        date_default_timezone_set("");
        $now_date=date("Y-m-d H:i:s");

    $query1="select exam_id from exam where {$now_date} > start_date";
    $result=mysqli_query($cnn,$query1);
    if($result){

    $row=mysqli_fetch_array($result);
    echo $exam_id. "exists";

    }else
    {echo mysqli_error($cnn);}

?>

3 个答案:

答案 0 :(得分:3)

在此代码中:

$query1="select exam_id from exam where {$now_date} > start_date";
$result=mysqli_query($cnn,@query1); // <-

您使用的是@query1,这应该是$query1

答案 1 :(得分:1)

$query1="select exam_id from exam where {$now_date} > start_date";
$result=mysqli_query($cnn,@query1);

我认为错误是因为你使用的是@而不是$。 你的查询似乎也错了。您应该将值与字段进行比较,将其更改为

   $query1="select exam_id from exam where start_date > '{$now_date}'";
   $result=mysqli_query($cnn,$query1);

答案 2 :(得分:1)

即使纠正@query1的错误类型,查询也不会像这样工作。 $now_date是一个字符串,您必须像字符串一样将其传递给查询。如果你用mysql的函数格式化它更好,不是用php的格式,也可以将存储在数据库中的时间与数据库自己的时间进行比较(那么你可以跳过任何时区问题)。因此,您的查询可能是这样的:

SELECT exam_id FROM exam WHERE DATEDIFF(NOW(), DATE_FORMAT(start_date,'%Y-%m-%d %T')) > 0;