#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. какую версию вы используете?