Сравнение временной отметки с текущим временем из базы данных

Мне нужно проверить текущее время на дату-время из базы данных, если это было 30 минут, тогда выполните код, если нет, тогда не. Вот где я нахожусь, и я застрял:

$link = mysqli_connect("hostname", "username", "password", "database"); $q = "SELECT id FROM dwCache ORDER BY id DESC LIMIT 1"; $qu = mysqli_query($link, $q); while($row=mysqli_fetch_array($qu, MYSQL_ASSOC)){ $id = $row['id']; $cache = $row['cache']; $timest = $row['time']; } $newTime = $difference = $timest if($timest >= ) 

Как вы можете видеть внизу, я теряю его, так как не уверен, что делать.

$timest возвращает: 2013-02-01 12:36:01 как формат Ymd his

Извинения за двойной пост, другие удалены.

Сначала конвертировать $ timest в timestamp

 $time = strtotime($timest); $curtime = time(); if(($curtime-$time) > 1800) { //1800 seconds //do stuff } 

сделать все это в sql-заявлении

 SELECT id FROM `dqCache` WHERE `time`<DATE_SUB(NOW(), INTERVAL 30 MINUTE); 

Это вернет все из вашей таблицы, где столбец времени до 30 минут до этого.

Мне нравится использовать временные метки unix в этой ситуации.

 $timest = date('u'); // gets the unix timestamp $q = "SELECT id FROM `dwCache` WHERE {$timest} - UNIX_TIMESTAMP(`timestamp_col`) > 1800"; 

Объяснение:

Это в основном вычисляет разницу между текущим временем и временем в столбце таблицы. Если он превышает 1800 (30 минут), он выберет строку, и ваш PHP-код будет выполнен.

преимущества

Есть несколько преимуществ использования этого вместо проверки PHP, которую вы начали делать. Вы будете выбирать меньшее количество строк, тем самым занимая меньше памяти.

PS:

Thumbs для использования MySQLi !

 SELECT id FROM dwCache ORDER BY id DESC LIMIT 1 

вы получите только поле id , это первое. Второй, для преобразования времени: MySQL конвертировать datetime в Unix timestamp

В-третьих: вы можете преобразовать свою строку времени, используя функцию strtotime .