2013-12-08 26 views
0

我有一個SQLite3數據庫的條目存儲傳感器讀數。表中的每一行如下所示:SQLite3和PHP:按日期時間排序條目

time    | temp1 | humid1 | temp2 | humid2 
2013-12-07 23:15:51 | 26.06 | 16.29 | 22.24 | 17.55 

其中第一個條目是日期,以下是傳感器數據。 現在我需要做的是使用PHP,獲取最近30分鐘的讀數。我只想要不到30分鐘的數據,因爲數據收集可能沒有運行,如果我剛剛選擇了第一組值,我就會得到舊數據。

我可以想到2種方法可以做到這一點: SQLite中有沒有辦法做到這一點?

SELECT * FROM table WHERE time < (time-30 minutes) 

我可以做的就是抓住第一個300倍的值(相當於30分鐘) 然後比較年,月,日,小時,分鐘和自己的另一件事。問題是,我不知道如何提取那些從PHP變量,我得到當我這樣做只是

SELECT * FROM table ORDER BY time DESC limit 300 

所以我們可以說我得到了行(PHP)稱爲$行,其中時間爲$行[ '時間']。 我該如何去解決這些年份,月份等等,並將其與當前時間進行比較?

+2

我個人更喜歡儲存時間在BIGINT格式並使用EPOC時間。這很好,因爲它避免了時區衝突。 – portforwardpodcast

回答

2

你應該能夠做這樣的事情:

SELECT * FROM table WHERE time > datetime('now', '-30 minutes'); 
+0

經過測試,工作! 'sqlite> select datetime('now')> datetime('now','-30 minutes'); 1' – quickshiftin

+0

非常好,謝謝!確切的語法是: 'SELECT * FROM table WHERE time> datetime('now','-30 minutes','localtime');'' – IanM