2012-03-26 5 views
1

У меня есть столбец, где я сохраняю временную метку записей, и я хочу удалить X-дневные старые записи из моей базы данных, но я не хочу удалять записи, которые имеют значение по умолчанию «0000-00-00 00: 00:00 "mysql timestamp выбор старых записей

Я попробовал этот запрос, чтобы сначала выбрать записи, но он выбирает почти все записи и записи по умолчанию по умолчанию.

SELECT * FROM `file` WHERE 'Accestime' != '0000-00-00 00:00:00' AND 'Accestime' < TIMESTAMPADD(DAY,-60,NOW()) 

Пожалуйста, не стесняйтесь, может ли кто-нибудь руководить тем, что я делаю неправильно выше?

Спасибо за любую помощь.

+0

Таким образом, записи с Accestime = '0000-00-00 00:00:00' удаляются в этом запросе? – Teja

+0

извините, я просто использую SELECT, чтобы сначала выбрать все записи, поэтому да, они также показываются. – user969068

ответ

3

в вашем примере запроса, вы используете литерал вместо столбца в качестве поля даты.

Чтобы уточнить, 'Accestime' - это не то же самое, что `Accestime``. Обратите внимание, что для использования используются обратные вызовы, а другой использует одинарные кавычки, поэтому в основном вы используете литеральную строку и сравниваете ее с данными даты. Кроме того, я думаю, вы хотели выбрать даты, которые меньше, чем 60 дней назад, не более. Попробуйте еще что-нибудь еще:

SELECT * FROM `file` WHERE `Accestime` != '0000-00-00 00:00:00' AND `Accestime` < TIMESTAMPADD(DAY,-60,NOW()) 
2

Чтобы избежать путаницы клещей и одинарных кавычек - ОСТАНОВИТЕ ИСПОЛЬЗОВАНИЕ ЦИСТЕРОВ !!! Я занимаюсь большим количеством sql в своей карьере, мне никогда не нужно было использовать тики. Поэтому я очень сомневаюсь, что любой сервер sql требует тиков в настоящее время.

У вас проблемы, потому что вы используете тики. Если факт, почему бы не использовать двойные кавычки и игнорировать ошибку, вероятные ситуации тиков и одинарных кавычек.

Я знаю, что это не обязательно, но хорошие привычки экономят время и головные боли.

DELETE * FROM file WHERE Accestime != "0000-00-00 00:00:00" 
AND Accestime < TIMESTAMPADD(DAY,-60,NOW()) 
+0

спасибо за консультацию .. это сработало – user969068

Смежные вопросы