[英]Getting nearest date from database
我有一个数据库,其中充满以下格式的数据:
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
(因为直到23:15:01
晚237.89
才将价格更改为237.89
)。
我无法理解如何使用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
}
看来效率很低。 有没有更好的办法?
很简单:
SELECT *
FROM yourtable
WHERE datetime <= 'the date user is looking for'
ORDER BY datetime DESC
LIMIT 1
从用户指定的日期之前获取所有记录,以降序对其进行排序,然后仅返回第一条记录。 那将是您的“最近日期”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.