SQL CURDATE语句

时间:2015-10-23 10:04:26

标签: php sql

以下行是否会删除昨天发生的表中的每个事件?

delete from events where date(event_date) < CURDATE() - INTERVAL 1 DAY;

如果没有,我该如何删除昨天发生的事件?

2 个答案:

答案 0 :(得分:4)

不,您的查询会删除比昨天更早的所有事件。要仅删除昨天发生的事件

delete from events
where date(event_date) = CURDATE() - INTERVAL 1 DAY;

答案 1 :(得分:1)

出于优化目的,最好在列上使用比较而不是函数。如果event_date没有时间组件:

delete from events
    where event_date = date_sub(CURDATE(), 'INTERVAL 1 DAY');

如果它确实有时间竞争力:

delete from events
    where event_date >= date_sub(CURDATE(), 'INTERVAL 1 DAY') and
          event_date < CURDATE();

特别是,这允许MySQL使用WHERE子句的索引,这可以使查询更有效。