[英]Datetime comparison PHP/Mysql?
我正在嘗試做這樣的事情:
if (datetime - system date > 15 minutes) (false)
if (datetime - system date <= 15 minutes) (true)
但我完全迷失了。 我不知道如何在 PHP 中進行此操作。
我想看看如何從我的數據庫中選擇 DateTime 並檢查它是否在我服務器時間的最后 15 分鍾之間。
數據庫類型為 MySQL。
最后,感謝 Sammitch 和其他人,我設法做到了,在這里我留下了片段:
$now = time();
$target = strtotime($row[1]);
$diff = $now - $target;
// 15 minutes = 15*60 seconds = 900
if ($diff <= 900) {
$seconds = $diff;
} else {
$seconds = $diff;
}
如果您的日期已經在 MySQL 中,您將需要在查詢中進行比較,因為:
下面是最有效的形式。 如果date
列上有索引,則將使用該索引。
SELECT *
FROM table
WHERE date > DATE_SUB(NOW(), INTERVAL 15 MINUTE)
文檔: DATE_SUB()
如果您需要在 PHP 中執行此操作:
$now = time();
$target = strtotime($date_from_db);
$diff = $now - $target;
if ( $diff > 900 ) {
// something
}
或者,更簡潔地說:
if( time() - strtotime($date_from_db) > 900 ) {
// something
}
您在其他答案中有針對 MYSQL 的解決方案,針對 PHP 的一個很好的解決方案是:-
$now = new \DateTime();
$target = new \DateTime(getTimeStringFromDB());
$minutes = ($target->getTimestamp() - $now->getTimestamp())/60;
if($minutes < 15){
// Do some stuff
} else {
//Do some other stuff
}
最高效的 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
}
}
嘗試這個
$interval = date_create($date_from_db)->diff(new \DateTime());
if ($interval->format('%r%l')>15) {
$result = false;
} else {
$result = true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.