0

如何将 MySQL 数据库中的这个日期时间与现在进行比较?

我使用 MySQL 函数 now() 发送了数据库记录中的日期,并试图检测超过 30 天的记录。

if (date_diff($myrow["LastLogin"], time()) > -30) {
  }

$myrow["LastLogin"]确实包含有效值,因为我将其视为文本。在数据库中确认它是“日期时间”类型。

这里有更多的代码。

if ($myrow = mysql_fetch_array($result_set)) { 

  do {
      if (date_diff($myrow["LastLogin"], getdate()) > -30) {
        echo "<tr>";
        echo "<td>" . $myrow["PCName"] . '&nbsp;</td>';
        echo "<td>" . $myrow["LastLogin"] . '&nbsp;</td>';
        echo "</tr>\n";
      }
  } while ($myrow = mysql_fetch_array($result_set));  
}

谢谢你!

4

3 回答 3

7

在您的查询中执行此操作,而不是在代码中。

SELECT * FROM myTable WHERE LastLogin < DATE_SUB(NOW(), INTERVAL 30 DAY)
于 2012-07-18T14:57:58.290 回答
1

你可以在服务器端通过

SELECT * FROM logins WHERE LastLogin < NOW() - INTERVAL 30 DAY

如果您需要在客户端执行此操作,则UNIX_TIMESTAMP返回整数可能更容易使用:

SELECT l.*,UNIX_TIMESTAMP(LastLogin) AS LastLogin_i FROM logins l

如果这些都不适合您的需要,您可以LastLogin使用以下方法转换返回的字符串strtotime()

lastLogin_i = strtotime($myrow["LastLogin"]);
于 2012-07-18T14:58:49.270 回答
1

此查询将删除 lastlogin 值超过 30 天的记录。

Delete from table where ((now() - lastlogin) > (30*24*60*60))
于 2012-07-18T15:03:23.807 回答