Tricky but not impossible: this is just a proof of concept.
With MyCTE (TheTime)
AS
(
SELECT convert(datetime2,'1900-01-01 0:08:00.0000001') UNION ALL
SELECT '1900-01-01 0:09:18.361' UNION ALL
SELECT '1900-01-01 0:13:50.705'
)
SELECT
*,
CAST(f.q AS TIME(7))
From myCTE a1
CROSS JOIN myCTE a2
CROSS APPLY (SELECT s_difference = DATEDIFF(second,a1.TheTime, a2.TheTime)) a
CROSS APPLY (SELECT aTime = DATEADD(second,s_difference,a1.TheTime)) b
CROSS APPLY (SELECT nsFraction = DATEDIFF(ns,aTime,a2.TheTime)) c
CROSS APPLY (SELECT tt = DATEADD(second,s_difference,0)) d
CROSS APPLY (SELECT t = CONVERT(VARCHAR(8),tt,108)) e
CROSS APPLY (SELECT q = e.t + '.' + CAST(nsFraction AS VARCHAR)) f
WHERE a1.TheTime < a2.TheTime
For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden