Solución:
Si sus fechas ya están en MySQL, querrá hacer la comparación en la consulta porque:
- MySQL tiene los tipos DATE adecuados.
- MySQL tiene índices para comparar.
- MySQL realiza comparaciones mucho más rápido que PHP.
- Si filtra sus datos en la consulta, entonces se pierde menos tiempo o no se pierde tiempo en transferir datos superfluos a la aplicación.
A continuación se muestra la forma más eficiente. Si hay un índice en el date
columna que se utilizará.
SELECT *
FROM table
WHERE date > DATE_SUB(NOW(), INTERVAL 15 MINUTE)
Documentos: DATE_SUB()
Si necesita hacerlo en PHP:
$now = time();
$target = strtotime($date_from_db);
$diff = $now - $target;
if ( $diff > 900 ) {
// something
}
o, más sucintamente:
if( time() - strtotime($date_from_db) > 900 ) {
// something
}
Tiene una solución para MYSQL en otras respuestas, una buena solución para PHP es: –
$now = new DateTime();
$target = new DateTime(getTimeStringFromDB());
$minutes = ($target->getTimestamp() - $now->getTimestamp())/60;
if($minutes < 15){
// Do some stuff
} else {
//Do some other stuff
}
la solución combinada PHP / MySQL más eficiente es:
$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
}
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)