Производный столбец служб SSIS для добавления первых 3 значений текущего года (YYY) к строковой дате (MMDDY) - PullRequest
2 голосов
/ 27 февраля 2020

У меня есть строковое значение даты, в котором отсутствует 201 из 2019. Строковое значение 03189101545, которое должно быть 03-18-(201)9 10:15:45

Я сделал левую переменную из серийного номера, чтобы извлечь 03189 и не могу понять, как добавить весь год назад.

LEFT([Serial Number],5)

Я пробовал приведение к дате, но это не удается.

(DT_DBTIME)LEFT([Serial Number],5)

Я думаю о выполнении

(DT_DATE) DATEADD("yyyy", 0, (LEFT([Serial Number],5)))

но, похоже, это та же проблема, что и проблема приведения.

1 Ответ

1 голос
/ 27 февраля 2020

Попробуйте использовать следующее выражение, оно преобразует строку в формат ISO yyyy-MM-dd HH:mm:ss, а затем приводит ее к дате:

(DT_DATE)("201" + SUBSTRING([Serial Number], 5,1) + "-" +
    LEFT([Serial Number], 2) + "-" +
    SUBSTRING([Serial Number], 3,2) + " " +
    SUBSTRING([Serial Number], 6,2) + ":" +
    SUBSTRING([Serial Number], 8,2) + ":" +
    RIGHT([Serial Number], 2))

Если вы хотите добавить 201 к существующему значению, используйте :

LEFT([Serial Number], 4) + "201 + RIGHT([Serial Number], 7)
...