Следующее работает для вашего одного примера. Я зависел от даты, начинающейся после первого двоеточия в текстовой строке, а затем от времени, содержащего второе вхождение двоеточия, чтобы определить конец даты и времени.
With TestValues AS
(
SELECT V.TextValue
FROM (VALUES
('PK Event System Time: 31 January 2019 02:09 OK TO RIGOUR till 08:00 on Thursday Morning')
) V(TextValue)
)
SELECT T.TextValue, TRY_CAST(DateString.DateString AS datetime) AS DateTimeVersion
FROM TestValues AS T
CROSS APPLY (SELECT NULLIF(CHARINDEX(':',T.TextValue),0) + 2 AS N) AS DateStart
CROSS APPLY (SELECT NULLIF(CHARINDEX(':',T.TextValue,DateStart.N),0) + 3 AS N) AS DateEnd
CROSS APPLY (SELECT SUBSTRING(T.TextValue,DateStart.N,DateEnd.N - DateStart.N) AS DateString) AS DateString