Все доброго времени суток! Помогите пожалуйста рещить проблему: У меня есть, например, таблица с двумя колонками "имя товара" и "цена" с n-ым количеством строк. Как мне отследить у каких строк была изменена цена например за последние 3 дня. Я знаю только [sql]SHOW TABLE STATUS[/sql], но результат выводит только сводную информацию, это не то... Очень надеюсь на вашу помощь!
добавить к таблице еще одну колонку - last_changed_date, при изменении цены пихать туда timestamp ну и select * from таблица where TIMESTAMPDIFF(DAY, NOW(), last_changed_date) <=3
И еще, у меня есть колонка "date_modified", я делаю как ты сказал: [sql] select * from таблица where TIMESTAMPDIFF(DAY, NOW(), date_modified) <=3 [/sql] мне выдает ошибку Код (Text): #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(DAY, NOW(), date_modified) <=3 LIMIT 0, 30' at line 1
1. что значит "как узнать"? ведь это твой скрипт меняет цену? ну вот когда скрипт меняет цену, пусть и пишет таймстамп в это поле. А когда меняет не цену а что-то еще, пусть не пишет. 2. какая версия mysql? TIMESTAMPDIFF появляется с 5.0, может быть в этом дело? Если да, попробуй просто datediff (NOW(),date_modified )
Смысл такой, в офисе есть своя внутренняя бд на акссесс. Нужный человек обновляет в ней цены одним махом на множество позиций товара. Затем цены из бд автоматически отправляются в бд mysql. Ему само собой пишется отчет об обновлении, НО ЧЕЛОВЕК ЭТОТ НЕ ХОРОШИЙ ЗАБИВАЕТ НА ОТЧЕТ, т.е. игнорит его. А на след. день или позже обнаруживается что обновление цен в бд mysql прошло не так гладко, т.е. не все позиции обновлены. И мне потом задается вопрос какие позиции обновились и время(дата) их обновления. Т.е. получается у меня нет доступа к скрипту обновления. И я пытаюсь выяснить какие и когда позиции обновились через mysql запросы в phpmyadmin. Версия и вправду у меня младше 5 и дело именно в этом. Я попробовал твой вариант: [sql] SELECT * FROM `имя_табл` WHERE datediff(DAY, NOW(), date_modified ) <= 3 [/sql] Мне отвечает: Код (Text): #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' date_modified ) <= 3 LIMIT 0, 30' at line 1 Я попробовал так: [sql] SELECT * FROM `имя_табл` WHERE datediff(NOW(), date_modified ) <=3 [/sql] Мне возвращает нулевой результат
Вроде как разобрался, сделал так: [sql] SELECT * FROM `имя_табл` WHERE TO_DAYS(NOW()) - TO_DAYS(date_modified) <=3 [/sql] Все работает как надо. Только еще раз хотел уточнить: тип поля TIMESTAMP будет автоматически проставлятся для строки, которая была или добавлена как новая или изменена по какому либо параметру, т.е. при обращении к этой строке операций INSERT или UPDATE?