我想要获取接近" 过期"的所有产品。
到期日期列exDate
上的日期格式为(Y-m)
或YYYY-MM
,例如:2018-03
。
我正在尝试使用此查询,但它从表中获取所有记录。
SELECT * FROM product WHERE (exDate BETWEEN DATE_FORMAT(NOW() ,'Y-m') AND NOW()+ interval 2 month)
答案 0 :(得分:2)
将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
并使用
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
之前