the only way to solve this is for you to confirm how to choose, for any row, which row is “previous”
is it based only on sequence of those datetime values?
then you need a self-join, where each row is matched to the row with the greatest datetime value that is less than the datetime value of that row
SELECT ...
FROM tbl_2020 AS this
LEFT OUTER
JOIN tbl_2020 AS prev
ON prev.sDatetime =
( SELECT MAX(sDatetime)
FROM tbl_2020
WHERE sDatetime < this.sDatetime )
SELECT this.sDatetime
, prev.sDatetime
FROM tbl_2020 AS this
LEFT OUTER
JOIN tbl_2020 AS prev
ON prev.sDatetime =
( SELECT MAX(sDatetime)
FROM tbl_2020
WHERE sDatetime < this.sDatetime )
WHERE TIMEDIFF(this.sDatetime, prev.sDatetime) > '01:00:00'
IMPORTANT: make sure there’s an index on sDatetime
if you’re asking me (because OP uses MAX in the original post too), the answer is of course
my MAX is inside a correlated subquery – eachthis row will be joined to only one prev row, which is the one that has the latest datetime that is less than the this row