2015-01-21 2 views
-1

hello stackoverflow.Событие MYSQL ОБНОВЛЕНИЕ значений

ive уже несколько часов оглядывается по сети, и я сказал, что вы знаете, что - люди обычно не хотят, чтобы вы это делали, но плохо делайте это.

Я пытаюсь достичь события в MYSQL, чтобы каждый час проверял, соответствует ли какой-либо из столбцов, содержащих временную метку unix, метку времени, которая составляет более 1 месяца/3 месяца/6 месяцев/старше, чем текущее время. и если изменить значение

В основном есть 3 колонки

  • purchase_date является старая метка
  • shop_type является колонка принятия решения, если его 1/3/6 месяцев быть 1, 2 или 3 соответственно
  • shop_status является колонна установлена ​​на «2», если временная отметка старше требования выше

ID узнать события прямо сейчас но я серьезно нужно только его 1 раз и я уверен, другие пользователи могут найти эту нить интересную

«макете код»

Event every 1 hour 

if (shop_type == "1" && (CURRENT_TIMESTAMP-purchase_date) >= 1month) 
UPDATE shop_status == "2" 

if (shop_type == "2" && (CURRENT_TIMESTAMP-purchase_date) >= 3months) 
UPDATE shop_status == "2" 

if (shop_type == "3" && (CURRENT_TIMESTAMP-purchase_date) >= 6months) 
UPDATE shop_status == "2" 

я знаю, что люди ненавидят людей вроде меня, но иногда нужно просто сделать это, потому что никто другой не поможет вам. надеюсь, что вы understand..the синтаксис события немного странно

+0

Просто написать 'SELECT' запрос, который находит строки, которые вы хотите, и запустить его с помощью планировщик событий. – Barmar

+0

, но я не знаю, как найти правильные совлады из-за текущей метки времени. – asker0111

+0

Вам не обязательно быть таким горьким, когда задавайте вопрос. Вы спрашиваете, как адаптировать эту логику к MySQL? Что-то вроде 'UPDATE tablename SET shop_status = 2 WHERE shop_type = 1 AND purchase_date> =?' Где '?' Является датой месяц назад? – tadman

ответ

0

Выполните следующий запрос от планировщика событий:

UPDATE shop_table 
SET shop_status = "2" 
WHERE (shop_type = "1" AND purchase_date <= DATE_SUB(NOW(), INTERVAL 1 MONTH)) 
OR (shop_type = "2" AND purchase_date <= DATE_SUB(NOW(), INTERVAL 3 MONTH)) 
OR (shop_type = "3" AND purchase_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH)) 
+0

работает как шарм! большое спасибо! – asker0111

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