SQL для извлечения части строки - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь извлечь временную метку из имени файла. Имя файла выглядит как 'Relabels for 10-19-2019 15-16-24'. Я хочу извлечь метку времени, т.е. 15-16-24 из этого имени файла. Может кто-нибудь помочь мне с запросом SQL? Я попытался использовать подстроку, но подстрока не работает для всех имен файлов.

Ответы [ 2 ]

2 голосов
/ 29 октября 2019

Если 15-16-24 предназначен для 15:16:24, то я понимаю это как время. Вы можете извлечь его, используя right():

select right(filename, 8)

Вы даже можете преобразовать его во время:

select try_convert(time, replace(right(filename, 8), '-', ':'))
0 голосов
/ 29 октября 2019

Вы можете быть очень явным и использовать DATETIMEFROMPARTS и SUBSTRING.

declare @dt_string varchar(100) = right('Relabels for 10-19-2019 15-16-24', (8+2)+1+(6+2));

select DATETIMEFROMPARTS(
  SUBSTRING(@dt_string,7,4), -- year
  SUBSTRING(@dt_string,1,2), -- month
  SUBSTRING(@dt_string,4,2), -- day
  SUBSTRING(@dt_string,12,2), -- hour
  SUBSTRING(@dt_string,15,2), -- minute
  SUBSTRING(@dt_string,18,2), -- second
  0 -- millisecond
  ) as dt_parsed;
dt_parsed
2019-10-19 15:16:24.000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...