如果joindate字段已存在六个月或更久,我想从表中删除一条记录。假设员工的joindate日期为2018年6月15日,则应在2018年11月15日删除该用户我已经存储了joindate和datetime。现在尝试创建一个查询,如果当前日期等于joindate+6month,该查询将删除一条记录。
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()) 用于测试
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
(就我个人而言,我会做小于或小于等于比较测试 < 或者 <= 而不是平等测试。)
<
<=
1条答案
按热度按时间uqcuzwp81#
似乎是个很简单的表达。
取当前日期,减去6个月,然后与joindate列比较,以确定joindate是否更早。
我们可以在查询中测试:
如果joindate早于六个月,表达式将返回1(true),或者返回0(false)或null。
我们可以指定一个特定的日期值来代替
DATE(NOW())
用于测试一旦我们有了一个经过测试的表达式,我们就可以在delete语句中使用它
(就我个人而言,我会做小于或小于等于比较测试
<
或者<=
而不是平等测试。)