You could use SQL, as
tye hinted. Suppose you load your data into a table named
sesn (session) with fields
sesn_id, usr_id, sesn_bgn, sesn_end and whatever else you may need, properly indexed etc. Then, a query like the following should do what you want (untested):
SELECT
foo.usr_id AS user,
foo.sesn_id AS session1,
bar.sesn_id AS session2,
foo.sesn_bgn AS start1,
bar.sesn_bgn AS start2,
foo.sesn_end AS end1,
bar.sesn_end AS end2
FROM
sesn foo,
sesn bar
WHERE
foo.usr_id = bar.usr_id
AND bar.sesn_bgn >= foo.sesn_bgn
AND bar.sesn_bgn <= foo.sesn_end
AND foo.sesn_id != bar.sesn_id
-- AND (conditions on min duration etc here)
Here I have assumed that you are trying to track multiple simultaneous sessions by the same user. If that's not what you meant, adjust accordingly.
Hope this helps. Cheers.