0

如果 DateTimeAdded 为 1 年或更长时间,我有一个查询可以更新该行。但我发现它在闰年不起作用。有人有更好的建议吗?

 CREATE EVENT UpdateProduct
     ON SCHEDULE
       EVERY 1 DAY
         DO

 update `product`  set Label = "ClearStock"  where  datediff(now(),
 DateTimeAdded) >= 365
4

1 回答 1

0

要识别具有DateTimeAdded超过一年价值的行,您可以执行以下操作:

 ... WHERE DateTimeAdded < NOW() + INTERVAL -1 YEAR

跟进

示范:

SELECT NOW() + INTERVAL 0 HOUR AS `now`
     , DATE(NOW()) + INTERVAL -1 YEAR AS `year_ago`
     , t.DateTimeAdded
     , t.DateTimeAdded < DATE(NOW()) + INTERVAL -1 YEAR AS `compare`
  FROM ( SELECT '2015-01-24 11:00:00' AS `DateTimeAdded`
          UNION ALL
         SELECT '2015-01-25 13:00:00'
          UNION ALL
         SELECT '2015-01-26 14:00:00'
       ) t  

返回:

NOW                  year_ago    DateTimeAdded        compare  
-------------------  ----------  -------------------  -------
2016-01-25 22:11:56  2015-01-25  2015-01-24 11:00:00        1
2016-01-25 22:11:56  2015-01-25  2015-01-25 13:00:00        0
2016-01-25 22:11:56  2015-01-26  2015-01-26 14:00:00        0
于 2016-01-26T03:05:11.957 回答