簡體   English   中英

如何從一列時間值中將它們與當前時間進行比較,並獲得當前時間之后的最接近值?

[英]How do I, from a column of time values, compare them with the current time and get the closest value after the current time?

假設您在MySQL數據庫的列中有一個時間值列表。

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

並說現在是10:27 AM。 如何在PHP中的變量中具體獲取上午10:35的值?

我知道我可以得到當前的時間

$currenttime = time();

然后使用

$some_time = strtotime($row['time']);

但是,如何獲取最接近的變量到$ some_time變量中呢?

您需要在記錄時間和參考時間之間具有最小增量的行,其中記錄時間大於參考時間。

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

'?' 是您的參考時間的占位符。

您可以使用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

嘗試獲取當前時間和可能時間之間差異的絕對值。 值最低者最接近。 從那里你唯一要擔心的是,如果一個給定的時間同樣接近兩次你可以用你喜歡的方式處理(對我來說,在這一點上簡單地回合似乎是最合理的)

問候,
丹尼斯·M

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM