如何从一列时间值中将它们与当前时间进行比较并获得当前时间之后的最接近值?

时间:2011-01-31 06:16:22

标签: php mysql time

假设您在MySQL数据库的列中有时间值列表。

Time
-----
10:15 AM
10:35 AM
10:55 AM

并说现在是10:27 AM。如何在PHP中的变量中专门获取10:35 AM值?

我知道我可以用

获得当前时间
$currenttime = time();

然后使用

操作时间值
$some_time = strtotime($row['time']);

但是如何将最接近的那个变成$ some_time变量?

3 个答案:

答案 0 :(得分:1)

您希望记录时间与参考时间之间的最小增量行,其中记录时间大于参考时间。

SELECT * FROM SomeTable AS T
 WHERE T.Time = (SELECT MIN(T2.Time) FROM SomeTable AS T2
                  WHERE T2.Time > ?)

'?'是您参考时间的占位符。

答案 1 :(得分:1)

您可以使用TIMESTAMPDIFF

在查询中获得最接近的时间
SELECT
  time, TIMESTAMPDIFF(MINUTE, time, NOW()) AS minutes
ORDER BY
  minutes, time DESC

如果您只想选择最近时间的一个拖车:

SELECT
  time, TIMESTAMPDIFF(MINUTE, time, NOW()) AS minutes
ORDER BY
  minutes, time DESC
LIMIT 1

答案 2 :(得分:0)

尝试获取当前时间和可能时间之间差异的绝对值。无论哪个值最低都是最接近的。从那里你唯一要担心的是,如果一个给定的时间同样接近两次,你可以用你喜欢的任何方式来处理(对我而言,在这一点上简单地进行整理似乎是最合理的)

的问候,
丹尼斯M。