我想把所有快要过期的产品都拿回来。
到期日列的日期格式为exDate(Y-m),例如:YYYY-MM
我正在尝试此查询,但它从表中获取所有记录。

SELECT * FROM product WHERE (exDate BETWEEN DATE_FORMAT(NOW() ,'Y-m') AND NOW()+ interval 2 month)

最佳答案

exDateYYYY-MM格式转换为mySql日期格式,然后对该值执行查询:

SELECT * FROM product WHERE STR_TO_DATE( `exDate`, "%Y-%m" ) BETWEEN CURDATE() AND DATE_ADD( CURDATE(), INTERVAL 2 MONTH)

YYYY-MM-DD转换为mySql日期格式
STR_TO_DATE( `exDate`, "%Y-%m" )

注意需要exDate符号来指定格式。
那么这就是必须落在区间内的值。
注意,您可以使用YYYY-MM-DD将当前日期转换为日期格式。
要向日期添加时间间隔,必须使用mySql函数%
请注意,从今天起,您将捕获值为CURDATE()DATE_ADD()2018-03-17产品。
exDate不是结果的一部分,因为它已经变成了2018-04并且在今天之前(下限)。
2018-05是结果的一部分,因为它变成了2018-03并且在评估为2018-03-01的上限2018-05之前

07-24 09:51