2017-04-24 90 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