This will give you milliseconds. Easy to adapt to seconds ...
declare @dfrom datetime = '1970-01-01 16:15:33.021' declare @dto datetime = '2058-01-01 15:00:55.557' declare @diff bigint = cast(DATEDIFF(d, @dfrom, @dto) as bigint) * 24 * 3600 * 1000 + DATEDIFF(ms, cast(@dfrom as time), cast(@dto as time)) declare @dreverse datetime = dateadd(ms, @diff % (1000 * 3600 * 24), dateadd(day, @diff / (1000 * 3600 * 24), @dfrom)) select @dfrom as [From], @dto as [To], @diff as [Diff], @dreverse as [Reverse] for xml path('')
gives:
<From>1970-01-01T16:15:33.020</From> <To>2058-01-01T15:00:55.557</To> <Diff>2777064322537</Diff> <Reverse>2058-01-01T15:00:55.557</Reverse>
source share