我想获取所有接近“过期”的产品。
到期日列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 date 格式 YYYY-MM-DD
然后对该值执行查询:
SELECT * FROM product WHERE STR_TO_DATE( `exDate`, "%Y-%m" ) BETWEEN CURDATE() AND DATE_ADD( CURDATE(), INTERVAL 2 MONTH)
将exDate
转成mySqldate格式YYYY-MM-DD
with
STR_TO_DATE( `exDate`, "%Y-%m" )
注意 %
符号是指定格式所必需的。
那么这个就是必须落入区间的值。
请注意,您可以只使用 CURDATE()
将当前日期转换为 date 格式。
要将时间间隔添加到日期,您必须使用 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
关于mysql - 选择日期格式为 'YYYY-MM' 的记录到给定范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49335370/