Извлечение даты из имени файла

#sql #sql-server #ssis-2012

#sql #sql-сервер #ssis-2012

Вопрос:

У меня есть столбец с именем FileName, и я хотел извлечь дату из столбца в виде столбца Date.

Имя файла M:MappingWorkforce_PlanningABCABClrmp.full.20160107.csv

Желаемый результат

Дата 2016-01-07

Я хотел узнать наиболее эффективный способ.

Заранее благодарю вас

Ответ №1:

Если это ваш формат, то это может быть лучшим способом:

 select cast(left(right(filename, 12), 8) as date)
  

Ответ №2:

Попробуйте следующий запрос: Даже имя файла изменено .. это вернет правильный вывод.

             select cast(SUBSTRING(filename,(PATINDEX('%[0-9]%',filename)),8) as DATE) 

            select CONVERT(datetime, cast(SUBSTRING(filename,(PATINDEX('%[0-9]%',filename)),8) as DATE), 103)
  

пример кода :

             CREATE TABLE #tmpTable(id INT, FileName  nvarchar(250))
            INSERT INTO #tmpTable values
            (1, 'M:MappingWorkforce_PlanningABCABClrmp.full.20160107.csv'),
            (2, 'M:Mapping.20160207.csv')

            select cast(SUBSTRING(filename,(PATINDEX('%[0-9]%',filename)),8) as DATE) from #tmpTable

            -- Or
            select CONVERT(datetime, cast(SUBSTRING(filename,(PATINDEX('%[0-9]%',filename)),8) as DATE), 103)
            from #tmpTable
  

Комментарии:

1. Я получаю сообщение об ошибке: не удалось преобразовать дату и / или время из символьной строки. Имя столбца — nvarchar(260).

2. какую версию вы используете?