我想把所有快要过期的产品都拿回来。
到期日列的日期格式为exDate
或(Y-m)
,例如:YYYY-MM
。
我正在尝试此查询,但它从表中获取所有记录。
SELECT * FROM product WHERE (exDate BETWEEN DATE_FORMAT(NOW() ,'Y-m') AND NOW()+ interval 2 month)
最佳答案
将exDate
从YYYY-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
之前