日期时间比较PHP/Mysql?

Ral*_*sho 4 php mysql datetime date difference

我有一个问题,我试图做出类似的东西:

if(datetime - 系统日期> 15分钟)(false)

if(datetime - 系统日期<= 15分钟)(true)

但我完全输了.我不知道如何在PHP中进行操作.

我问我是否可以从我的数据库中选择该日期时间并检查该日期时间是否在我服务器的最后15分钟之间,我的数据库是Mysql.

希望你能理解我!谢谢!


最后,我要感谢Sammitch和其他人,在这里我留下片段:

    $now = time();
     $target = strtotime($row[1]);
     $diff = $now - $target;

    //15 minuts 15*60 = 900
     if ($diff <= 900) {
        $seconds =  $diff;
     } else {
$seconds =  $diff;    
 }
Run Code Online (Sandbox Code Playgroud)

Sam*_*tch 20

如果您的日期已经在MySQL中,您将需要在查询中进行比较,因为:

  1. MySQL有适当的DATE类型.
  2. MySQL有比较的索引.
  3. MySQL的执行比较比PHP快.
  4. 如果您在查询中过滤数据的次数较少,或者没有时间将多余的数据转移回应用程序.

以下是最有效的表格.如果date列上有索引,则将使用它.

SELECT *
FROM table
WHERE date > DATE_SUB(NOW(), INTERVAL 15 MINUTE)
Run Code Online (Sandbox Code Playgroud)

文档: DATE_SUB()

如果您需要在PHP中执行此操作:

$now = time();
$target = strtotime($date_from_db);
$diff = $now - $target;
if ( $diff > 900 ) {
  // something
}
Run Code Online (Sandbox Code Playgroud)

或者,更简洁:

if( time() - strtotime($date_from_db) > 900 ) {
  // something
}
Run Code Online (Sandbox Code Playgroud)


Aam*_*irR 5

最高效的 PHP/MySQL 组合解决方案是:

$date = date('Y-m-d H:i:s', strtotime('-15 minutes'));
$data = $pdo->query("SELECT date_field > '$date' as expired from table")->fetchAll(PDO::FETCH_COLUMN);
foreach($data as $expired) {
    if (!$expired) {
        // Still Valid
    }
}
Run Code Online (Sandbox Code Playgroud)