选择日期格式为'YYYY-MM'的记录到给定范围内

问题描述 投票:1回答:1

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

有效期限列exDate上的日期格式为(Y-m)YYYY-MM,例如:2018-03

我正在尝试使用此查询,但它从表中获取所有记录。

SELECT * FROM product WHERE (exDate BETWEEN DATE_FORMAT(NOW() ,'Y-m') AND NOW()+ interval 2 month)
mysql date between
1个回答
2
投票

exDateYYYY-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,您将使用值为exDate2018-042018-05捕获产品。

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

2018-05是结果的一部分,因为它变成了2018-05-01,并且在上限DATE_ADD( CURDATE(), INTERVAL 2 MONTH)之前评估为2018-05-17

© www.soinside.com 2019 - 2024. All rights reserved.