Если вы используете MySQL 8.0, просто используйте lead()
:
select
date,
datediff(lead(date) over(order by date), date) days_diff
from mytable
В более ранних версиях параметр является коррелированным подзапросом:
select
t.date,
datediff(
(select min(t1.date) from mytable t1 where t1.date > t.date),
t.date
) days_diff
from mytable t