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

1 年以上経過した値を持つ行を特定するには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 に答える