Выбор последнего события за промежуток времени
Если я правильно понял, нужно выбрать все даты одним запросом.

SELECT id, MAX(time) FROM table_name
WHERE time BETWEEN '2013-01-01' AND '2014-01-01'
GROUP BY id

Если я правильно понял вопрос, то

SELECT id FROM table_name WHERE object_id = $OBJECT_ID AND time >= $START_TIME AND time <= $END_TIME ORDER BY time LIMIT 1

Чтобы запрос был эффективным, вам может понадобится (если таблица большая) составной индекс по object_id и time.

Скорее всего time придется взять в кавычки, смотря что за СУБД.