Как грамотно почистить базу

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

kav78

Новичок
Как грамотно почистить базу

привет бойцы PHP и Мускула, вопрос след. характера:
Есть WAP сайт рейтинга, там есть записи в БД которые уже не нужны.
Необходимо их удалять по прошествию времени, например записи недельной давности. Понятное дело что делается это функцией DELETE, но как правильно и граматно это сделать?

P.S. В ,базе запись времени и даты ведется в виде: 23.06.07 11:50:06

Зарание спасибо, мудрейшие!!!
 

Wicked

Новичок
делается это запросом типа
delete from ... where `поле даты` < DATE_SUB(NOW(), INTERVAL 7 DAY).
т.е., по-русски:
"удалить из таблицы все записи, у которых дата раньше, чем неделя назад"

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

kav78

Новичок
Автор оригинала: Wicked
делается это запросом типа
delete from ... where `поле даты` < DATE_SUB(NOW(), INTERVAL 7 DAY).
т.е., по-русски:
"удалить из таблицы все записи, у которых дата раньше, чем неделя назад"
А почему нельзя сделать так:
delete from ... where `поле даты` < '16.06.07'
 

Фанат

oncle terrible
Команда форума
попробуй. на тестовой базе. сразу все сам увидишь.
лучше один раз увидеть, чем сто раз услышать
 

kav78

Новичок
Автор оригинала: *****
попробуй. на тестовой базе. сразу все сам увидишь.
лучше один раз увидеть, чем сто раз услышать
Попробовал, не фурычит.

А как мне быть?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
kav78

Попробовал, не фурычит.
А как мне быть?
Пробовали что?
delete from ... where `поле даты` < '16.06.07'????
Запрос и не будет работать. поскольку у вас кроме даты есть ещё время это во первых
во вторых, Вы уверенны, что Муcкул правильно поймет, для строкового поля знак < или >?




-~{}~ 23.06.07 21:42:

Пробовали по другому?
как?
Пожалуйста, продемонстрируйте



П.С. Дату нужно хранить в понятном для базы (дата-временном) типе, а не фиг знает в чём.
 

Dr.Serg

Новичок
Можно просто выбирать из даты нужные данные например
23.06.07 11:50:06 только 23 и 06 с помощью функции substr() и отделить их функцией split() и сравнить с текущим днем и месяцем.

И все
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Dr.Serg
1. Рвать лечить гланды через задницу не совсем удобно.
2. В январе, что будем делать?

kav78
Поле даты - в datetime timestamp
но не в varchar как сейчас.
В таком случае все преимущества БД практически сводятся к нулю.

Вот это действительно все.
 

Dr.Serg

Новичок
Автор оригинала: Mr_Max
Dr.Serg
1. Рвать лечить гланды через задницу не совсем удобно.

2. В январе, что будем делать?
1. Зато эффективно!:D :D
2. :confused: Блин, ну год добавить можно.

Сам та че предлагаешь? Бахнуть базу и начать все сначала? (Если она уже существует).
С правильным хранением типа?
 

Bitterman

Новичок
Dr.Serg
Ты действительно считаешь, что для того, чтобы поменять тип поля, сохранив все значения, нужно "бахнуть базу"?
 

Dr.Serg

Новичок
Автор оригинала: Bitterman
Dr.Serg
Ты действительно считаешь, что для того, чтобы поменять тип поля, сохранив все значения, нужно "бахнуть базу"?
Нет конечно но перед нами была поставлена задача именно с этим типом записи. К примеру, потому что так захотел Заказчик. Вот и давайте ее решать.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
2. Блин, ну год добавить можно.
Ви можете его хоть привести к timestamp-у. Только зачем?

Сам та че предлагаешь? Бахнуть базу и начать все сначала? (Если она уже существует).
С правильным хранением типа?
Ненужно ничего "бахать". создаём новое поле таблицы
и апдейтим его

new_date=CONCAT(substring(old_date, 7, 4), '-', substring(old_date, 4, 2), '-', substring(old_date, 1, 2), substring(old_date, 11))



-~{}~ 24.06.07 00:29:

Dr.Serg
Нет конечно но перед нами была поставлена задача именно с этим типом записи. К примеру, потому что так захотел Заказчик. Вот и давайте ее решать.
1. А давайте Вы почтаете соответствующие страницы манула по MySQL?
А именно функции даты-времени.
http://www.mysql.ru/docs/man/Date_and_time_functions.html

-~{}~ 24.06.07 00:32:

.



поставлена задача именно с этим типом записи
Простите, Это не тип записи, а неизвесно что.
Значит поставленная Вам заказчиком задача была неправильно Вами понята. ;)
Заказчику главно что?
Чтоб циферки ему показывались так как он хочет.
А как они хранятся в БД это уже не его дело.

-~{}~ 24.06.07 00:34:

.

Вам же главное чтоб работать с этими цифрами было удобно.

Вывод хранить так как нужно для быстрой и удобной работы с БД.
Заказчику форматировать при выводе.
 

Wicked

Новичок
Dr.Serg
kav78
есть такая парадигма (или шаблон проектирования, кому как нравится) - MVC. В данном случае у нас в чистом виде смешение модели и отображения, потому что отображение не инкапсулирует в себе формат вывода дат, а навязывает его модели. Чтобы сделать правильно, в модели даты должны храниться так, как с ними будет удобно работать программистам - в формате поля datetime (или в int timestamp, но я считаю, что timestamp хуже). А view отображение уже будет преобразовывать этот формат к формату, который хочет видеть заказчик.
 

Фанат

oncle terrible
Команда форума
топик закрыт, в силу полной неадекватности как "Заказчика", так и неизвестно, откуда взявшегося доброхота.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху