如果字段加入日期是六个月前或更早,我想从表中删除记录。
假设员工的加入日期为 2018 年 6 月 15 日,应在 2018 年 11 月 15 日删除该用户
我已经存储了加入日期和日期时间。 现在尝试创建一个查询,如果当前日期等于加入日期 + 6 个月,该查询将删除记录。
似乎是一个非常简单的表达。
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
(就个人而言,我会做小于或小于或等于比较测试<
或<=
,而不是等于测试。