Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql将存储的日期与今天的日期进行比较_Php_Mysql - Fatal编程技术网

Php Mysql将存储的日期与今天的日期进行比较

Php Mysql将存储的日期与今天的日期进行比较,php,mysql,Php,Mysql,我想查看我的数据库日期和时间,并将它们与当前的日期和时间进行比较,然后说出哪个更大 <?php include_once("db.php"); $date = new DateTime(); //echo $date->format('Y-m-d H:i:s') $query = "SELECT timedate, email FROM mailer"; $result = mysql_query($query); echo "<table>"; while($row

我想查看我的数据库日期和时间,并将它们与当前的日期和时间进行比较,然后说出哪个更大

<?php
include_once("db.php");
$date = new DateTime();
//echo $date->format('Y-m-d H:i:s')

$query = "SELECT timedate, email  FROM mailer";
$result = mysql_query($query);
echo "<table>";
while($row = mysql_fetch_array($result)){
       $tot = $row['timedate'];
       $ema = $row['email'];
    if($tot > $date) {
    //echo "<tr><td>" .$row['timedate']."</td><td>";
    echo"database dates higher then now dates" . "<br>";
    echo "<tr><td>" .$row['email']."</td><td>" ."<br>";
   echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>";
}
else {
    echo"database dates lower then now dates" . "<br>";
    echo "<tr><td>" .$row['email']."</td><td>". "<br>";
       echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>";
}

}
mysql_close();
?>

正如你所看到的,最后一个条目是错误的,它被设置为5月30日,所以它应该比现在的日期高。我的猜测是我没有正确使用当前日期,我需要格式化它。

你不能用这种方式比较日期。您必须先将它们转换为时间戳。请尝试-

if(strtotime($tot) > strtotime($date))
因为timedate在PHP中是datetime,所以您可以简单地使用


在比较数据库结果之前,应首先将其格式化为日期

<?php
include_once("db.php");
$date = new DateTime();
//echo $date->format('Y-m-d H:i:s')

$query = "SELECT timedate, email  FROM mailer";
$result = mysql_query($query);
echo "<table>";
while($row = mysql_fetch_array($result)){
       $tot = DateTime::createFromFormat("Y-m-d H:i:s",$row['timedate']);
       $ema = $row['email'];
    if($tot > $date) {
       echo"database dates higher then now dates" . "<br>";
       echo "<tr><td>" .$row['email']."</td><td>" ."<br>";
       echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>";
    } else {
       echo"database dates lower then now dates" . "<br>";
       echo "<tr><td>" .$row['email']."</td><td>". "<br>";
       echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>";
    }

}
mysql_close();
?>
如果$tot>$date不能直接比较数据时间值, 您必须首先将它们转换为时间值

$dateTick=strottime$date; $totTick=STROTIME$tot

之后只比较


如果$dateTick<$totTick

允许数据库执行此操作,则可以说不太容易出错,而且可能更高效

SELECT timedate, (timedate < NOW()) AS earlier, email  FROM mailer;
这将返回一个名为“更早”的新列,该列是动态生成的,告诉您哪些日期更早,是否为“1”,是否为“0”,如果timedate为NULL,则为NULL

您还可以使用CASE表达式,结合多个逻辑测试来派生新信息。这些操作在MySQL中通常非常快。

timedate的数据类型是什么?
<?php
include_once("db.php");
$date = new DateTime();
//echo $date->format('Y-m-d H:i:s')

$query = "SELECT timedate, email  FROM mailer";
$result = mysql_query($query);
echo "<table>";
while($row = mysql_fetch_array($result)){
       $tot = DateTime::createFromFormat("Y-m-d H:i:s",$row['timedate']);
       $ema = $row['email'];
    if($tot > $date) {
       echo"database dates higher then now dates" . "<br>";
       echo "<tr><td>" .$row['email']."</td><td>" ."<br>";
       echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>";
    } else {
       echo"database dates lower then now dates" . "<br>";
       echo "<tr><td>" .$row['email']."</td><td>". "<br>";
       echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>";
    }

}
mysql_close();
?>
SELECT timedate, (timedate < NOW()) AS earlier, email  FROM mailer;