Подтвердить что ты не робот

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

Мне нужно проверить текущее время на datetime из базы данных, если это было 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 как формат Y-m-d h-i-s

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

4b9b3361

Ответ 1

Сначала преобразовать $timest в timestamp

$time = strtotime($timest);

$curtime = time();

if(($curtime-$time) > 1800) {     //1800 seconds
  //do stuff
}

Ответ 2

сделать все это в инструкции sql

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

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

Ответ 3

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

$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 up для использования MySQLi!

Ответ 4

SELECT id FROM dwCache ORDER BY id DESC LIMIT 1

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

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