mysql,如何根据具体日期选择行?

gkl3eglg  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(345)

我有以下问题。有四列,产品标识,产品价格,开始日期和结束日期,我需要选择一个给定日期(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')
kyvafyod

kyvafyod1#

你可以在最高价格上加入

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
pxy2qtax

pxy2qtax2#

试着实现这个,会给你一个预期的结果。

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);
n6lpvg4x

n6lpvg4x3#

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

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;

换句话说,你的日期比较是反向的。一个时间段包含一个特定的日期,如果它开始于该日期或之前,结束于该日期或之后。

相关问题