MySQL,如何根据特定日期选择行?

时间:2018-08-28 10:56:58

标签: mysql sql select

我有以下问题。有四个列,即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')

3 个答案:

答案 0 :(得分:1)

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

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;

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

答案 1 :(得分:0)

您可以使用最高价加入

  select Product_ID, Product_price 
  from Products 
  inner join (
        select max(Product_price) max_price 
        from Products
        WHERE STR_TO_DATE('1997/12/14', '%y/%m/%d') between Start_date AND   End_date 
  ) t on Products.Product_price = t.max_price 

答案 2 :(得分:0)

尝试执行此操作,将为您带来预期的结果。

select p.ID,p.Price
from product p
where '<Your Date>'<=p.EndDate AND '<Your Date>'>=p.StartDate And p.Price=(select 
max(p.Price) from product p);