首页 > 解决方案 > MySQL,如何根据特定日期选择行?

问题描述

我有以下问题。有四列 Product_ID、Product_price、Start_date 和 End_date 我需要选择给定日期(1997/12/14)价格最高的产品。关键是产品ID可以在几行中保持不变,但产品在不同时间段的价格不同。我试图做这样的事情,但我得到一个空的结果:

SELECT 
Product_ID, Product_price 
FROM Products 
WHERE
Start_date >= STR_TO_DATE('1997/12/14', '%y/%m/%d')
AND 
End_date =< STR_TO_DATE('1997/12/14', '%y/%m/%d')

标签: mysqlsqlselect

解决方案


我认为你想要的逻辑更像是这样的:

SELECT p.Product_ID, p.Product_price 
FROM Products p
WHERE p.Start_date <= '1997-12-14' AND 
      p.End_date >= '1997-12-14' 
ORDER BY p.Product_price DESC
LIMIT 1;

换句话说,您的日期比较是倒退的。一个时间段包含一个特定的日期,如果它在该日期或之前开始并在该日期或之后结束。


推荐阅读