繁体   English   中英

在mysql中检索两个日期之间的数据

[英]Retrieve data between two dates in mysql

我在使用MySQL查询时遇到问题,我有一个“产品”表。 在此表中,我有一个“product_expiry”列。 我正在尝试创建一个表单,该表单将检索在两个日期之间具有“product_expiry”日期的所有产品。

例如,我想获得“product_expiry”日期从“04/2016”到“09/2016”的产品。

为此我决定使用此查询。

SELECT * FROM `products` WHERE MONTH(product_expiry) >= "4" AND MONTH(product_expiry) <= "9" AND YEAR(product_expiry) = "2016"

虽然我在这些日期之间有产品,但它返回了0个产品。 我认为问题在于日期的格式。

然后我试了一下

SELECT * FROM `products` WHERE MONTH(STR_TO_DATE(`product_expiry`,'%d,%m,%Y')) >= "4" AND MONTH(STR_TO_DATE(`product_expiry`,'%d,%m,%Y')) <= "9" AND YEAR(STR_TO_DATE(`product_expiry`,'%d,%m,%Y')) = "2016"

但它再次回归0产品。

注意: “product_expiry”是varchar而不是日期列,日期格式为日/月/年

尝试使用以下查询。 我在WHERE子句中将'%d,%m,%Y'替换为'%d/%m/%Y'

SELECT *
FROM `products`
WHERE MONTH(STR_TO_DATE(`product_expiry`, '%d/%m/%Y')) >= 4
    AND MONTH(STR_TO_DATE(`product_expiry`, '%d/%m/%Y')) <= 9
    AND YEAR(STR_TO_DATE(`product_expiry`, '%d/%m/%Y')) = 2016

请找Working Demo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM