MYSQL事件更新值

时间:2015-01-21 20:17:57

标签: mysql

hello stackoverflow。

我已经在网上浏览了几个小时,现在没有成功,我说,你知道什么 - 人们通常不希望你这样做,但只是这样做。

我试图在MYSQL中实现一个事件,即每小时都会检查包含unix时间戳的任何列是否包含超过当前时间超过1个月/ 3个月/ 6个月/更久的时间戳。如果它改变了值

基本上有3列

  • purchase_date是旧时间戳
  • shop_type是决定其1/3/6个月是否相应为1,2或3的专栏
  • shop_status是设置为" 2"的列。如果该时间戳早于上述要求

id正在学习事件,但我认真只需要它一次,并且我确定其他用户可能会发现这个帖子很有趣

"样机代码"

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"

我知道人们讨厌像我这样的人,但有时你必须这样做,因为没有其他人会帮助你。希望你理解..事件语法有点奇怪

1 个答案:

答案 0 :(得分: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))