选择日期格式为' YYYY-MM'进入给定的范围

时间:2018-03-17 11:18:52

标签: mysql date between

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

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

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

SELECT * FROM product WHERE (exDate BETWEEN DATE_FORMAT(NOW() ,'Y-m') AND NOW()+ interval 2 month)

1 个答案:

答案 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并使用

转换为mySql 日期格式YYYY-MM-DD
STR_TO_DATE( `exDate`, "%Y-%m" )

请注意,指定格式需要%符号。

然后这是必须落入间隔的值。

请注意,您只需使用CURDATE()即可将当前日期转换为日期格式。

要为日期添加时间间隔,您必须使用mySql函数DATE_ADD()

请注意,截至今天2018-03-17,您将会抓住exDate的值为2018-042018-05的产品。

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

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