Mysql 从 date_format 中减去两天

Mysql subtract two days from date_format

我想获取所有日期比当前日期大两天的记录。我只想比较月份和日期。 这是我试过的。

select * from reminder where date_sub(date_format(Birthday,%m-%d),interval 2 day)=Date_Format(curdate(),'%m-%d');

但是它return没有任何记录。

例如,它应该 return 所有日期如下的记录:

1977-07-04
1984-07-04
1989-07-04
1995-07-04

Date_sub 函数需要一个日期。相反,您将一个从 date_format 函数获得的字符串传递给它。也许它试图将其恢复到最新状态。但它不应该必须。

相反,您应该先执行日期运算,然后再转换为字符串:

 where date_format(date_sub(Birthday,interval 2 day),'%m-%d') = Date_Format(curdate(),'%m-%d')