Вы можете использовать PATINDEX
, если знаете шаблон:
SELECT
str,
CONVERT(DATETIME, SUBSTRING(str, PATINDEX('%[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]%', str), 19), 103) AS dt
FROM (VALUES
('Application approved by John Doe - MDat30/01/2018 10:54:31 Kitchen Sink')
) tests(str)
Приведенный выше пример можно настроить так, чтобы он возвращал ноль, если дата не найдена (подсказка: NULLIF
).Результат:
| str | dt |
|-------------------------------------------------------------------------|-------------------------|
| Application approved by John Doe - MDat30/01/2018 10:54:31 Kitchen Sink | 2018-01-30 10:54:31.000 |