【发布时间】:2016-09-08 12:28:03
【问题描述】:
我在使用 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 不是日期列 日期格式为日/月/年
【问题讨论】:
-
如果您尝试使用
4, 9, 2016作为整数而不是"4", "9", "2016",会发生什么? -
返回 0 个产品
-
1.将日期存储为日期