如果记录的加入日期已满六个月,则从表中删除该记录

vltsax25  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(255)

如果joindate字段已存在六个月或更久,我想从表中删除一条记录。
假设员工的joindate日期为2018年6月15日,则应在2018年11月15日删除该用户
我已经存储了joindate和datetime。现在尝试创建一个查询,如果当前日期等于joindate+6month,该查询将删除一条记录。

uqcuzwp8

uqcuzwp81#

似乎是个很简单的表达。

joindate < DATE(NOW()) + INTERVAL -6 MONTH

取当前日期,减去6个月,然后与joindate列比较,以确定joindate是否更早。
我们可以在查询中测试:

SELECT t.joindate < DATE(NOW()) + INTERVAL -6 MONTH `older_than_six_months`
     , t.joindate 
     , t.id
     , ... 
  FROM mytable t
 ORDER BY t.joindate ASC

如果joindate早于六个月,表达式将返回1(true),或者返回0(false)或null。
我们可以指定一个特定的日期值来代替 DATE(NOW()) 用于测试

SELECT t.joindate < DATE(NOW()) + INTERVAL -6 MONTH `older_than_six_months`
     , t.joindate < '2018-07-01' + INTERVAL -6 MONTH `six_months_20180701`
     , t.joindate 
     , t.id
     , ... 
  FROM mytable t
 ORDER BY t.joindate ASC

一旦我们有了一个经过测试的表达式,我们就可以在delete语句中使用它

DELETE t.*
  FROM mytable t
 WHERE t.joindate < DATE(NOW()) + INTERVAL -6 MONTH

(就我个人而言,我会做小于或小于等于比较测试 < 或者 <= 而不是平等测试。)

相关问题