我想要获取所有接近“过期”的产品。
有效期限列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
,您将使用值为exDate
和2018-04
的2018-05
捕获产品。
2018-03
不是结果的一部分,因为它变成了2018-03-01
,并且在今天之前(下限)。
2018-05
是结果的一部分,因为它变成了2018-05-01
,并且在上限DATE_ADD( CURDATE(), INTERVAL 2 MONTH)
之前评估为2018-05-17