我想获取所有接近">过期"的产品。
到期日期列exDate
上的日期格式为(Y-m)
或YYYY-MM
,例如:2018-03
。
我正在尝试使用此查询,但它从表中获取所有记录。
SELECT * FROM product WHERE (exDate BETWEEN DATE_FORMAT(NOW() ,'Y-m') AND NOW()+ interval 2 month)
exDate
从YYYY-MM
格式转换为 mySql 日期格式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()
即可将当前日期转换为日期格式。
要向日期添加时间间隔,您必须使用 mySql 函数DATE_ADD()
请注意,从今天开始2018-03-17
您将捕获具有值2018-04
和2018-05
的exDate
的产品。
2018-03
不是结果的一部分,因为它已转换为2018-03-01
并且早于今天(下限(。
2018-05
是结果的一部分,因为它已转换为2018-05-01
,并且位于计算结果为 2018-05-17
的上限DATE_ADD( CURDATE(), INTERVAL 2 MONTH)
之前