从数据库获取最近的日期

时间:2015-02-04 18:06:22

标签: php mysql

我有一个数据库,其中包含以下格式的数据:

DateTime*             Price
2013-09-17 22:15:01   13.45
2013-09-17 22:30:02   145.92
2013-09-17 23:15:01   237.89
2014-09-17 03:15:02   95.01
2014-09-21 12:45:02   108.32
...                   ...

它持续了多年。时间总是超过00,15,30或45小时(不应该有太大差别),但正如你所看到的,有几分钟,几小时甚至几天的差距。

如果有人要求知道2013-09-17 22:52:35的价格是多少,则应将其返回145.92(因为价格在237.89之后才会更改为23:15:01天)。

我无法理解如何使用MySQL或PHP来做到这一点,除非像这样:

(伪代码)

CONVERT TIME SO DATETIME MINUTES END IN 00, 15, 30 or 45
SEARCH DATABASE FOR THAT EXACT DATETIME
WHILE DATETIME NOT FOUND IN DB {
    CHECK DATABASE FOR DATETIME -15 MINUTES
}

效率似乎非常低。还有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

这很简单:

SELECT *
FROM yourtable
WHERE datetime <= 'the date user is looking for'
ORDER BY datetime DESC
LIMIT 1

从用户指定日期之前获取所有记录,按降序排序,然后仅返回第一条记录。那将是你“最近的约会”。