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;