У меня 14-DEC-16 06.23.37.000 дате в csv-файле.Как конвертировать 14-DEC-16 06.23.37.000 в datetime в ssis
Как конвертировать 14-DEC-16 06.23.37.000 в datetime в ssis и вставлять в таблицу sql.
У меня 14-DEC-16 06.23.37.000 дате в csv-файле.Как конвертировать 14-DEC-16 06.23.37.000 в datetime в ssis
Как конвертировать 14-DEC-16 06.23.37.000 в datetime в ssis и вставлять в таблицу sql.
Предполагается, что вы работаете над данными, в которых вы ЗНАЕТЕ, что не будет дат вне границ 2000 - 2099, и вы ЗНАЕТЕ, что вы всегда получите тот же строковый формат с аббревиатурами месяца ENG в нем, вы можете использовать следующие преобразование:
DECLARE @DateString nvarchar(50) = N'14-DEC-16 06.23.37.000';
WITH cte AS(
SELECT
CASE
WHEN CHARINDEX('-DEC-', @DateString) > 0 THEN REPLACE(@DateString, '-DEC-', '.12.20')
WHEN CHARINDEX('-NOV-', @DateString) > 0 THEN REPLACE(@DateString, '-NOV-', '.11.20')
WHEN CHARINDEX('-OCT-', @DateString) > 0 THEN REPLACE(@DateString, '-OCT-', '.10.20')
WHEN CHARINDEX('-SEP-', @DateString) > 0 THEN REPLACE(@DateString, '-SEP-', '.09.20')
WHEN CHARINDEX('-AUG-', @DateString) > 0 THEN REPLACE(@DateString, '-AUG-', '.08.20')
WHEN CHARINDEX('-JUL-', @DateString) > 0 THEN REPLACE(@DateString, '-JUL-', '.07.20')
WHEN CHARINDEX('-JUN-', @DateString) > 0 THEN REPLACE(@DateString, '-JUN-', '.06.20')
WHEN CHARINDEX('-MAY-', @DateString) > 0 THEN REPLACE(@DateString, '-MAY-', '.05.20')
WHEN CHARINDEX('-APR-', @DateString) > 0 THEN REPLACE(@DateString, '-APR-', '.04.20')
WHEN CHARINDEX('-MAR-', @DateString) > 0 THEN REPLACE(@DateString, '-MAR-', '.03.20')
WHEN CHARINDEX('-FEB-', @DateString) > 0 THEN REPLACE(@DateString, '-FEB-', '.02.20')
WHEN CHARINDEX('-JAN-', @DateString) > 0 THEN REPLACE(@DateString, '-JAN-', '.01.20')
END AS DateString
)
SELECT DateString,
CONVERT(datetime, RIGHT(LEFT(DateString, 10),4)+'-'+SUBSTRING(LEFT(DateString, 10),4,2)+'-'+LEFT(LEFT(DateString, 10),2) +
REPLACE(LEFT(RIGHT(DateString,13),9),'.',':') + RIGHT(DateString, 4)) AS MyDate
FROM cte
Я определил @DateString, но здесь вы также можете использовать псевдоним столбца.
Как использовать это в ssis – user7434607
Одним довольно быстрым и грязным подходом может быть просто выполнить его как «Выполнять задачу SQL» и извлечь результат в переменную. Другая возможность заключалась бы в создании производного столбца и использовании специальной обработки строки SSIS в выражении в этом столбце. – Tyron78
Можете ли вы показать нам, что вы пробовали? – Glorfindel
Используйте либо производную колонку, либо трансформацию скрипта. Этот формат настолько необычен, что нет возможности найти готовое преобразование, особенно когда вы говорите о датах в ** 1916 **. Я предлагаю вам исправить источник или процесс экспорта, чтобы использовать четырехзначные годы. Еще лучше изменить его для экспорта в формате ISO8601. –
Использование двухзначных лет означает, что вы не знаете, что вы импортируете. Мы уже справились с этой проблемой, вызванной Y2K. Reintroducint такая известная ошибка непростительна. Также нет оснований предполагать, что '14-DEC-16' составляет 2016 вместо 1916 года. Это второй год Первой мировой войны. Есть памятные события ** СЕЙЧАС ** о событиях в то время. Вы найдете много подобных дат в течение следующих 2-3 лет. –