2017-04-24 88 views
0

我有一個MySQL數據庫,它存儲LogID,Unix時間戳,溫度,溼度和光照水平。我正試圖獲得一個查詢,該查詢在設定日期&時間之前提取最後一條記錄。我的數據如下:MySQL查詢日期前的最新記錄

|69511|2017-04-24 19:53:23|19.8|52.7|1.76 
|69512|2017-04-24 20:07:57|20|53.8|1.86 
|69513|2017-04-24 20:12:00|20.1|54.9|1.07 
|69514|2017-04-24 20:29:58|20.2|53.8|1.95 

因此,如果需要的日期是2017年4月24日20點十分00秒的查詢將返回記錄:

|69512|2017-04-24 20:07:57|20|53.8|1.86 

如之前的第一個記錄2017- 04-24 20:10:00。

誰能幫助?謝謝。

回答

2

使用「通過UNIX_TIMESTAMP倒序」 WHERE子句所討論的日期前將您的檢索記錄,然後按降序按時間戳排序(按ID排序可能也會起作用),並以限制1取第一條記錄。

SELECT * FROM your_table 
WHERE ts_column < '2017-04-24 20:10:00' 
ORDER BY ts_column DESC LIMIT 1 

我簡化了表& timestamp列的名稱,但是這應該給你一個總體思路。

+1

時間戳與質量答案=更好的那些總是那樣; *更好* ;-) –

0

使用時間戳過濾where子句中的記錄。按降序對其進行排序,並使用限制獲得最高1條記錄。

select * from table_name 
where unix_timestamp < '2017-04-24 20:10:00' 
order by unix_timestamp desc 
limit 1 
+2

雖然此代碼可能回答此問題,但提供有關此代碼爲何和/或如何回答此問題的其他上下文可提高其長期價值。 –

0

也許嘗試:

SELECT * FROM {tablename} WHERE {timestamp column} < '2017-04-24 20:10:00' LIMIT 1 

編輯:添加

+2

做或不​​做。沒有「嘗試」。一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

+0

@JayBlanchard指出 – DB1500