我有一个数据库,其中包含以下格式的数据:
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
}
效率似乎非常低。还有更好的方法吗?
答案 0 :(得分:4)
这很简单:
SELECT *
FROM yourtable
WHERE datetime <= 'the date user is looking for'
ORDER BY datetime DESC
LIMIT 1
从用户指定日期之前获取所有记录,按降序排序,然后仅返回第一条记录。那将是你“最近的约会”。