这可能是一个简单的,但由于我对MySQL知之甚少,我不知道如何做到这一点,这就是我基本上想要的,
我有这样的查询
//时间格式“yyyy-MM-dd”
SELECT ID
FROM `id_table`
WHERE time > "2012-01-05 " AND time < "2012-01-10";
但是在id_table
我的数据只有2012-01-04,然后它再次从“2012-01-20”开始,所以上面的查询将返回null。有什么方法可以从表中检索最后一条数据记录,因为这个例子我可以从这个查询中得到2012-01-04日期的ID吗
SELECT ID
FROM `id_table`
WHERE time > "2012-01-05"
答案 0 :(得分:3)
您是否正在寻找距离最近的ID
到2010-01-05的行(我假设最大ID)time
?
SELECT MAX(ID) as LastId FROM id_table
WHERE time = (SELECT MAX(time)
FROM id_table WHERE time < '2012-01-05')
答案 1 :(得分:0)
试试这个:
SELECT ID FROM id_table
WHERE time between
least((select max(time) from id_table), "2012-01-05") AND "2012-01-10";
请注意,between
将从"2012-01-10" and ("2012-01-05" OR "2012-01-05)
答案 2 :(得分:0)
要获得最接近给定时间的记录(如果您关心处理重复项,您可以轻松调整此项,如果这无关紧要,那么仅此一项就足够了)
SELECT
ID
FROM
id_table
ORDER BY ABS(DATEDIFF(time, '2012-01-05'))
LIMIT 1
注意:如果时间字段是时间值yyyy-mm-dd hh:mm:ss,那么您可以使用TIMEDIFF进行更准确的比较。
OP如果您将详细解释如何处理不同的情况,我可以调整此示例以适应它们。欢呼声。