如果字段joindate是六个月或更久,我想从表中删除记录。
假设员工的约会日期是15-06-2018,并且在15-11-2018用户应该被删除
我已存储了joindate和datetime。现在尝试创建一个查询,如果当前日期等于joindate + 6个月,将删除记录。
答案 0 :(得分:0)
看起来像一个非常简单的表达。
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
(就个人而言,我会做小于或小于或等于比较测试<
或<=
而不是等于测试。)