SQL按截止时间列获取行

时间:2015-06-11 19:39:04

标签: mysql datetime

假设我有一个产品表,如下所示:

| prod_id  | prod_name   | prod_price | prod_deadline      |
|   1      | prod_A 1    | 30.00      | 2015-05-13 04:00:00|
|   2      | prod_A 2    | 40.00      | 2015-06-12 04:00:00|
|   3      | prod_A 3    | 50.00      | 2015-07-21 04:00:00|

我的产品A有三个不同的截止日期,5月13日之后的价格是30美元,6月12日之后的价格是40美元,7月21日之后的价格是50美元。出于各种商业原因,列结构已设置且无法更改。

如果今天是2015-06-11 16:00:00什么是MySQL查询将得到正确的价格支付,而不是通过PHP或结果中的任何语言循环?

1 个答案:

答案 0 :(得分:2)

您可以使用order bywherelimit进行此计算。我想它会像这样工作:

select p.*
from products p
where prod_name = 'prod A' and prod_deadline <= now()
order by prod_deadline desc
limit 1

产品名称可能需要like而不是=