日期之间的条件选择

use*_*349 10 mysql sql datetime date between

我有一张桌子,想找到最低和最高价格.我希望在"from"和"to"之间的当前日期从action_table获得最低价格.

from        to          action_price  price
2015-04-02  2015-08-02  20            25
2015-04-02  2015-04-20  0             30
2015-04-03  2015-04-21  0             40
Run Code Online (Sandbox Code Playgroud)

所以从上表我需要:min-> 20(因为"from"/"to"之间的当前日期)和max-> 40

我尝试了类似的东西,但没有按预期工作:

SELECT 
CASE WHEN curdate() BETWEEN from AND to THEN MAX(action_price) ELSE MAX(price) END AS max,
CASE WHEN curdate() BETWEEN from AND to THEN MIN(action_price) ELSE MIN(price) END AS min
FROM `table`;
Run Code Online (Sandbox Code Playgroud)

Sal*_*n A 7

如果我理解正确,您需要最小值和最大值:

25 20,30,40

您只需将case语句包装在聚合函数中而不是其他方式:

SELECT
MIN(CASE WHEN CURDATE() BETWEEN `from` AND `to` THEN action_price ELSE price END) AS `min`,
MAX(CASE WHEN CURDATE() BETWEEN `from` AND `to` THEN action_price ELSE price END) AS `max`
FROM action_table;
Run Code Online (Sandbox Code Playgroud)
+------+------+
| min  | max  |
+------+------+
|   20 |   40 |
+------+------+
Run Code Online (Sandbox Code Playgroud)