Удаление полей по времени

Статус
В этой теме нельзя размещать новые ответы.

leet

Новичок
Удаление полей по времени

Есть таблица, в которой одной из полей (поле date) в формате Y-m-d H:i:s. Нужно удалить строки, где время поля date меньше текущего, например, на 20 минут. Делаю это вот так:
PHP:
<?php
$query = mysql_query("DELETE FROM online WHERE date < NOW() - INTERVAL '20' MINUTE");
?>
Не срабатывает. Точнее срабатывает, но удаляет абсолютно все записи из таблицы. Где я ошибаюь и как отладить запрос под миня ?
 

Bitterman

Новичок
1. Получить в пыхе время в нужном формате, на 20 минут раньше, чем текущее.
2. Подставить в запрос.
 

Активист

Активист
Команда форума
Должно работать.

Код:
mysql> select '2008-11-07 23:23:19' < NOW() - INTERVAL '20' MINUTE;
+------------------------------------------------------+
| '2008-11-07 23:23:19' < NOW() - INTERVAL '20' MINUTE |
+------------------------------------------------------+
|                                                    0 |
+------------------------------------------------------+
1 row in set (0.03 sec)

mysql> select '2008-11-07 22:23:19' < NOW() - INTERVAL '20' MINUTE;
+------------------------------------------------------+
| '2008-11-07 22:23:19' < NOW() - INTERVAL '20' MINUTE |
+------------------------------------------------------+
|                                                    1 |
+------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
Видимо где-то в другом проблема.
 
WHERE date < DATE_SUB(NOW(), INTERVAL '20' MINUTE)
по-моему тут так написано ??
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-add
 

Активист

Активист
Команда форума
Bitterman
А может еще предложишь вместо MySQL использовать XML?

-~{}~ 07.11.08 18:40:

leet
Покажи
show create table `online`
 

leet

Новичок
ё-маё, Вы тут ужэ чуть ли ни падрались из-за миня ))))
Активист, тут мая затупка, я INSERTил дату в одном фармате (Y-d-m H:i:s) а выборку и удаление делал по формату даты (Y-m-d H:i:s). Ребят, ашипка мая, фсем спассибо за быстрый отклик )))
 

Активист

Активист
Команда форума
leet
На будущее, единственно правильный формат хранения дат и времени в MySQL:
YYYY-DD-MM HH:II:SS
т.к. любая следующая дата или секунда будет всегда большое предыдуших и всегда меньше следующих (если убрать тире и пробелы, как и делает MySQL, т.е. представлением в виде целого числа)
 

leet

Новичок
Активист
Хм.. Не понял. По твоему, если убрать тире и представить дату в этом формате в виде целого числа, то палучается что 9-е октября 2008г должно быть большэ 8-го ноября 2008г ??? Вить записаны ани будет соответственно так
9-е октября 2008 -- 20080910
8-е ноября 2008 -- 20080811
Или чота я недапанмаю или ты где та миня абманываеш )))
 

Bitterman

Новичок
Активист
может еще предложишь вместо MySQL использовать XML?
Ты это вообще к чему? С чего ты взял, что я предлагаю MySQL на что-то заменять? Я предлагаю вычислить константу в PHP и подставлять в запрос. Что в этом неправильного?
На будущее, единственно правильный формат хранения дат и времени в MySQL:
YYYY-DD-MM HH:II:SS
Не надо выдавать свое мнение за единственно правильный вариант. Дату/время можно хранить в datetime, timestamp или int, кому как нравится. Все три эти формата правильно отсортируют введенные даты по возрастанию/убыванию без всяких колдунств с порядком чисел.
 

leet

Новичок
findnext
Если чесна я тожэ считаю хранение даты в фармате YYYY DD MM не очень удобным.. Тут самае главнае не запутацо ))

-~{}~ 08.11.08 06:44:

а будет ли корректно работать мой запрос
PHP:
$query = mysql_query("DELETE FROM online WHERE date < NOW() - INTERVAL '20' MINUTE");
если я буду использовать дату в формате YYYY-MM-DD HH:II:SS ??
 

HraKK

Мудак
Команда форума
На будущее, единственно правильный формат хранения дат и времени в MySQL:
YYYY-DD-MM HH:II:SS
На будущее перед чем нести диаметральноо противоположну чушь, загляни куда небудь кроме как в свой амбициозный моск.

писец.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху