2011-05-25 99 views
1

我從數據庫中的兩個傳感器獲取原始數據。爲了從這些傳感器計算出有意義的結果,我需要每個數據點。問題是他們的時間戳不能保證完全匹配。我可以請求MySQL從一個傳感器獲取時間戳,並找到最接近其他傳感器的時間戳,但是需要爲每行運行該請求,然後每當添加一個新行時再次運行,並且我擔心每當插入數據點時通過表進行搜索可能會成爲性能負擔,尤其是如果添加了更多類似傳感器的話。至少對於一個天真的算法來說,找到最接近的時間戳看起來像是一個線性時間操作。這會導致性能問題,還是MySQL在這方面有優化?MySQL日期時間字段的最近匹配

回答

3

你可以使用一個簡單的查詢,以獲取最接近的結果爲給定值:

SELECT `timestampcolumn` 
FROM `thetable` 
ORDER BY ABS(`timestampcolumn` - givenvalue) 
LIMIT 1 

應該做的伎倆,是不是很密集的性能,如果你在右列使用一個索引。 MySQL是爲這樣的查詢而製作的。

+0

謝謝。索引聽起來就像我正在尋找的東西。 – Strill 2011-05-28 00:05:37

0
  1. 可以使用MySQL的功能,使口罩變換時間戳日本最新像20130109(yyyymmddhhmmsszzz)或代碼中使用PHP,JAVA等;

  2. 在試圖找到一個選擇行,你可以做這樣的事情的時候:

SELECT * FROM TABLE WHERE ADATE BETWEEN(LEFT(BEGINDATE, 8), LEFT(ENDDATE, 8));

OR

SELECT * FROM TABLE WHERE ADATA < LEFT(MYDATE, 8) LIMIT 1;

OR

在解放軍中使用類似「_」的通緝令CE你需要,就像你想要變化的那個月一樣。