Intereting Posts
Как сбросить внешний ключ в миграции доктрины 2 Переадресация звонков Twilio Как отключить определение функции так же, как мы отключили переменную? Я хочу вставить данные в базу данных mysql, используя PDO PHP. Но данные не вставлены PHP pagination – проблема отображения правильного содержимого на дополнительных страницах я хочу получить общее количество пользователей заданных идентификаторов направления в таблице CActiveForm и его поведение не имеют метода или закрытия с именем «getErrors». MySQLi динамическая подготовленная функция с привязкой к массиву Как перенаправить обратно в форму с помощью ввода – Laravel 5 безопасное место для хранения значений php для msql_connect? Как конвертировать `if condition` в` switch` метод Получение информации из 3 таблиц SQL & PHP Как сбросить автоматическое приращение при удалении пользователя laravel? Команды MySqli не синхронизированы; вы не можете запустить эту команду сейчас Интеграция между Zend Framework и Facebook Connect

Mysql удалять по разнице во времени ()

Я хочу удалить каждую строку, где разница во времени составляет 5 минут. Я использую time () как int.

mysql_query("DELETE FROM users WHERE time()-time > 300"); 

запрос – проблема …

time() является функцией PHP – и в SQL не имеет абсолютно никакого смысла.

Вы должны:

  • использовать одну из функций MySQL datetime
    • Чтобы получить unix_timestamp(now()) UNIX, я полагаю, что unix_timestamp(now()) может сделать трюк.
  • или получить time() из SQL-запроса, поэтому он оценивается PHP.

Например, используя вторую идею, я полагаю, вы могли бы сделать что-то вроде этого:

 mysql_query("DELETE FROM users WHERE " . time() . "-time > 300"); 

Предполагая, что время – столбец в таблице пользователей, это то, что вам нужно:

 mysql_query("DELETE FROM users WHERE NOW() - INTERVAL 300 SECOND > time"); 

Функция NOW () – это функция, которая возвращает время на сервере БД, а не на веб-сервере.

Просто убедитесь, что часы на сервере БД и веб-сервере синхронизированы

Вот пример с помощью SELECT

 mysql> select now(),(now() - INTERVAL 300 SECOND); +---------------------+-------------------------------+ | now() | (now() - INTERVAL 300 SECOND) | +---------------------+-------------------------------+ | 2011-04-15 16:21:41 | 2011-04-15 16:16:41 | +---------------------+-------------------------------+ 

mysql_query ("УДАЛИТЬ ОТ пользователей WHERE time <'". (time () – 300). "'");
и этот запрос будет кэшироваться mysql