如何比较MySQL数据库中的这个日期时间?

时间:2012-07-18 14:55:01

标签: php mysql

如何将此数据库的日期时间与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));  
}
谢谢你!

3 个答案:

答案 0 :(得分:7)

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

SELECT * FROM myTable WHERE LastLogin < DATE_SUB(NOW(), INTERVAL 30 DAY)

答案 1 :(得分: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"]);

答案 2 :(得分:1)

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

Delete from table where ((now() - lastlogin) > (30*24*60*60))