根据基于多行的日期/时间范围选择记录

时间:2018-10-30 21:12:24

标签: mysql date

我具有以下表格结构

id          date             time            discount
------------------------------------------------------
1         2015-08-10       09:30:00           50%
2         2016-04-15       14:00:00           30%
3         2018-01-25       18:15:00           75%
4         2018-11-19       11:45:00           45%

我想查询该表以查找特定日期的折扣金额;

预期结果;

如果我查询的日期在2015-08-10 09:30:00-2016-04-15 13:59:59之间,则结果应为50%

对于2016-04-15 14:00:00-2018-01-25 18:14:59之间的日期,应产生30%

示例:

  

查询该表的日期2016-01-10 08:00:00应该   结果50%

我已经搜索了SO和Google,但找不到适合我的案例的解决方案;

尝试对我的示例进行查询

SELECT * FROM discounts WHERE date<='2016-01-10' AND time<='08:00:00'
ORDER BY date DESC LIMIT 1

但没有运气!

我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以在表结构中使用类似的内容-

从“ 2015-08-10 09:30:00”和“ 2016-04-15 13:59:59”之间的CAST(CONCAT(日期,“”,时间)作为DATETIME)之间的折扣中选择折扣>

您也许可以在不强制转换值的情况下走开,但这将确保日期和时间值的格式正确。

但是我建议将日期和时间值存储为单个标准datetime值。有理由将它分为两​​个单独的列吗?