SELECT 将日期格式 'YYYY-MM' 记录到给定范围内

SELECT records with date in format 'YYYY-MM' into given range

我想获取接近“过期”的所有产品。

到期日期列 exDate 的日期格式为 (Y-m)YYYY-MM,例如:2018-03.

我正在尝试使用此查询,但它从 table.

中获取所有记录
SELECT * FROM product WHERE (exDate BETWEEN DATE_FORMAT(NOW() ,'Y-m') AND NOW()+ interval 2 month)

exDateYYYY-MM 格式转换为 mySql date 格式 YYYY-MM-DD 然后对该值执行查询:

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

exDate转成mySql日期格式YYYY-MM-DD

STR_TO_DATE( `exDate`, "%Y-%m" )

请注意需要 % 符号来指定格式。

那么这个就是必须落入区间的值

请注意,您可以只使用 CURDATE() 将当前日期转换为 date 格式。

要为 日期 添加时间间隔,您必须使用 mySql 函数 DATE_ADD()


请注意,从今天 2018-03-17 开始,您将捕获具有 exDate 且值为 2018-042018-05 的产品。

2018-03 不是 结果的一部分,因为它变成了 2018-03-01 并且在今天 之前(下限)。

2018-05 结果的一部分,因为它变成了2018-05-01并且在计算结果为[=的上限DATE_ADD( CURDATE(), INTERVAL 2 MONTH)之前29=]