我需要找到一种更好更快的方法来查询 MySQL 表以获取给定日期范围内每一天的特定数据,其中表有两个日期列指定开始日期和结束日期。
表示例:促销列:
ID startDate EndDate Discount CategoryID
=============================================================
1 2010/08/01 2010/08/10 10.00 A
2 2010/08/01 2010/08/10 15.00 B
3 2010/08/11 2010/08/15 05.00 A
4 2010/08/11 2010/08/15 10.00 B
我知道当给出两个日期范围时,我可以从以下查询中获取匹配促销
SELECT * FROM Promotions WHERE (startDate <= "2010/08/12" AND endDate >= "2010/08/15") AND CategoryID = A
上述查询的结果将获取 ID 为 3 的行
但是,如果上述查询中的两个日期范围更改为如下所示
SELECT * FROM Promotions WHERE (startDate <= "2010/08/12" AND endDate >= "2010/08/18") AND CategoryID = A
我没有得到任何匹配的结果,因为我可以理解逻辑与表中存储的任何数据都不匹配。
这就是为什么,我需要一个更好的解决方案,即使结束日期超过促销的结束日期,我也可以获得匹配的结果。但是更改逻辑不会给我最好的答案,假设如果我使用以下查询可以得到结果,但是如果我需要找到日期范围内每一天的有效折扣,这也不能解决我的整个问题.
SELECT * FROM Promotions WHERE (startDate <= "2010/08/12" AND CategoryID = A
我需要的真正结果是一种将此查询转换为循环或使用内存中的临时 MySQL 表来获取每天的结果的方法,如下所示。
结果我需要找到日期范围 2010/08/12 到 2010/08/18
===================================================================
Date Discount
=========================
2010/08/12 05.00
2010/08/13 05.00
2010/08/14 05.00
2010/08/15 05.00
2010/08/16 null
2010/08/18 null
我希望我的问题和问题得到很好的解释,如果您需要有关此问题的任何进一步说明,请告诉我。
希望看到一个很好的答案。