Предполагая, что таблица как:
create table item ( i int not null primary key,
t datetime not null );
select i1.i, i2.i,
abs( unix_timestamp( i1.t ) - unix_timestamp( i2.t )) diff
from item i1
join item i2 on i1.i+1 = i2.i
order by diff desc
limit 1;
Это самостоятельное соединение, в котором строка соединяется со следующей строкой. Значение diff выводится в порядке убывания (сначала по возрастанию), и выводится только первая строка.
РЕДАКТИРОВАТЬ: Вот слабая попытка спасти мое решение с учетом уточнения вопроса.
Создайте временную таблицу с порядком записей datetime, присвойте значение auto_increment, представляющее ранжирование, затем примените самосоединение к временной таблице:
create temporary table ranked_item ( rank int not null auto_increment primary key,
i int not null,
t datetime not null );
insert into ranked_item
select null, i, t from item order by t asc;
select i1.rank, i2.rank, i1.i, i2.i,
abs( unix_timestamp( i1.t ) - unix_timestamp( i2.t )) diff
from ranked_item i1
join ranked_item i2 on i1.rank+1 = i2.rank
order by diff desc
limit 1;
Очевидно, что если ваша таблица предметов огромна, это может быть немного экстравагантно.