当前位置: 首页 > 知识库问答 >
问题:

如何使用PHP比较来自MYSQL的两个日期

梁烨
2023-03-14

我正在尝试用PHP做一件简单的事情,但是不能正常运行。 所以,我需要用PHP比较来自MYSQL的两个日期,并显示最早的日期,但PHP中的结果是不正确的。

我在MYSQL DB中有这样一个表:

CREATE TABLE users (
    id int,
    name varchar(255),
    date1 date,
    date2 date,
);

+---+---------------+------------+------------+
|id |name           |date1       |date2       |
+---+---------------+-------------------------+
|1  |ANA            |2005-02-27  |2004-03-27  |
+---+---------------+------------+------------+
|2  |MARIA          |2010-03-08  |2014-11-01  |
+---+---------------+-------------------------+

我使用以下PHP代码:

$conn =  mysqli_connect($host, $user, $pwd, $db);
$sql = "SELECT name, UNIX_TIMESTAMP(date1), UNIX_TIMESTAMP(date2) FROM users ";
$result = mysqli_query($conn, $sql);

echo "<html>";
echo "<head>";
echo "</head>";
echo "<body>";

echo "<table border=1>";
echo "<tr>";
echo "<td><b>Name</b></td>";
echo "<td><b>Date1</b></td>";
echo "<td><b>Date2</b></td>";
echo "<td><b>Oldest Date</b></td>";
echo "<tr>";
while ($row = mysqli_fetch_array($result)) {
   echo "<tr>";
      echo "<td>" . $row[0] . "</td>";
      echo "<td>" . $row[1] . "</td>";
      echo "<td>" . $row[2] . "</td>";
      if (intval($row[1]) < intval($row[2])){
         echo "<td>" . $row[1] . "</td>";
      } else {
         echo "<td>" . $row[2] . "</td>";
      };
   };
   echo "</tr>";
};
echo "</table>";

这似乎很容易,但这种比较的说法并没有正确返回。 我只是尝试了以下这些方法:

1.使用运算符<; (没有正确的返回):

if ($row[1] < $row[2]) {...}

2.使用intval强制unix_timestamp为整数(没有正确的返回):

if (intval($row[1]) < intval($row[2])) {...}

有办法解决这个问题吗? 它是一个简单的日期比较(来自MYSQL中日期类型的字段)。

谢谢

共有2个答案

仲元凯
2023-03-14

您可以按照日期的存储方式返回日期(而不是转换为unix),并使用DateTime对象检查日期。

$sql = "SELECT name, date1, date2 FROM users";

...

while ($row = mysqli_fetch_array($result)) {

    //convert date1 string to DateTime object.
    $date1 = new \DateTime($row[1]);

    //convert date1 string to DateTime object.
    $date2 = new \DateTime($row[2]);

    //create a variable (using a Ternary) to hold the biggest date
    //Ternary means = (Expression) ? true : false
    $oldest_date = ($date1 > $date2) ? $date2 : $date1;

    ?>
        <tr>
            <td><?= $row[0] ?></td>
            <td><?= $row[1] ?></td>
            <td><?= $row[2] ?></td>
            <td><?= $oldest_date ?></td>
        </tr>
    <?php
}
  • 日期时间
  • 三元
顾乐池
2023-03-14

就让de database替你处理吧:

$sql = "SELECT name, date1, date2, IF(date1 < date2, date1, date2) FROM users";

现在$row[3]总是包含最小的日期。

 类似资料:
  • 问题内容: 如果日期格式为和,如何在php中比较两个日期。 我正在使用此代码: 但它不起作用.. 问题答案: 您必须确保您的日期是有效的日期对象。 尝试这个: 然后,您可以执行该方法来获得差异。

  • 问题内容: 如何在PHP中比较两个日期? 在数据库中,日期看起来像2011-10-2。 如果我想将今天的日期与数据库中的日期进行比较,看哪个更大,我该怎么做? 我试过了 但这并不是真的那样。还有另一种方法吗? 更新:我知道这篇文章有点老,但是我只想提及carbon,它是与laravel一起使用的一类,但可以与经典php一起使用,并且它确实与日期有关。检查一下:碳 问题答案: 在数据库中日期看起来像

  • 问题内容: 如何使用Python比较两个日期以查看稍后的日期? 例如,我想检查当前日期是否超过了我创建的假期日期列表中的最后日期,因此它将自动发送电子邮件,告诉管理员更新holiday.txt文件。 问题答案: 使用方法和运算符及其种类。

  • 问题内容: 有人可以建议一种使用JavaScript 比较 两个 大于,小于和过去的 日期 的值的方法吗?这些值将来自文本框。 问题答案: 该Date对象会做你想要的东西- 构造一个每个日期,然后用它们进行比较,,或。 在,,,和运营商要求使用作为 要清楚的是,仅直接检查日期对象是否相等将不起作用 我建议您使用下拉列表或日期输入的某些类似约束形式,而不要使用文本框,以免您陷入输入验证的困境。

  • 问题内容: 我想比较两个日期和时间,我想要所有结果 但这只是比较日期而不是时间。它给了我今天日期的所有结果集 提前致谢! 问题答案: 您要显示的查询示例: 04:00:00是4AM,所以您显示的所有结果都 在 那 之后 ,这是正确的。 如果要在下午4点之后显示所有内容,则需要在查询中使用正确的(24hr)表示法。 为了使事情更清晰,请尝试以下操作: 这将向您显示日期及其12小时时间。

  • 问题内容: 我正在尝试比较两个日期,而我只想比较日期部分而不是时间部分,这就是我在程序中存储日期的方式: 我有一个: 我想用 但是由于还涉及时间部分,所以我无法获得正确的答案。我该如何解决我的问题? 我不想使用JODA-TIME 问题答案: 您可以像这样逐个比较价值 要么 如果您使用Date类,请考虑改用Calendar类这是最优雅的解决方案,为此使用Calendar和Comparator 用法:

  • 我在android studio中使用firebase创建了一个聊天应用程序,我的所有活动都正常运行,除了日期显示, 我想设置日期在一次如果它是相同的否则显示新的日期如果它是不相同的上一个日期我试图设置但它显示一些错误 这里是错误 我获取当前日期 然后把它交给聊天室。java使用按钮。OnclickListner 这是我的适配器 有人知道怎么解决这个问题吗?

  • 问题内容: 我想比较两个日期,但是我遇到了麻烦。从一个对象创建一个日期,然后手动制作另一个日期。以下代码是一个示例: 但是测试结果。我猜是因为时间的缘故。如何检查这两个日期是否相等(我的意思是年,月,日相同)? 问题答案: 要么