Преобразование yymmdd в datetime с использованием производного столбца ssis

Ниже приведены строки, представляющие дату рождения (ггммдд). Я хочу преобразовать его в формат datetime и загрузить в базу данных с помощью ssis. Как я могу это сделать? В производном столбце у меня есть (DT_DATE) (SUBSTRING ([Drv DOB], 1,2) + «-» + SUBSTRING ([Drv DOB], 3,2) + «-» + SUBSTRING ([Drv DOB], 5 , 2)), но не работает.

ПОЛУЧАЮ ЭТИ ОШИБКИ:

  1. [Производный столбец [2]] Ошибка: произошла ошибка при попытке выполнить приведение типа.
  2. [Производный столбец [2]] Ошибка: код ошибки SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. «Производный столбец» завершился неудачно, потому что произошла ошибка с кодом 0xC0049064, а размещение строки ошибки на «Производный столбец.Inputs [Производный столбец ввода] .Columns [Drv DOB]» указывает сбой при ошибке. Произошла ошибка в указанном объекте указанного компонента. Перед этим могут быть опубликованы сообщения об ошибках с дополнительной информацией об ошибке.

•470324 •470324 •470209 •101 •0


person apariyar    schedule 19.08.2014    source источник


Ответы (2)


В ГОДЕ 4 цифры, а не 2, поэтому это будет:

(DT_DATE)("20" + SUBSTRING([Drv DOB],1,2) + "-" + 
                 SUBSTRING([Drv DOB],3,2) + "-" + 
                 SUBSTRING([Drv DOB],5,2))
person Justin    schedule 20.08.2014
comment
ОК ЭТО: (DT_DATE) (SUBSTRING (20 + [Drv DOB], 1,2) + SUBSTRING ([Drv DOB], 3,2) + SUBSTRING ([Drv DOB], 5,2)) [Производный столбец [ 2]] ........ Я ПОЛУЧАЮ ЭТУ ОШИБКУ Ошибка: код ошибки SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Произошла ошибка в производном столбце, потому что произошла ошибка с кодом 0xC0049064, а размещение строки с ошибкой в ​​производном столбце.Inputs [Derived Column Input] .Columns [Drv DOB] указывает сбой при ошибке. Произошла ошибка в указанном объекте указанного компонента. Перед этим могут быть опубликованы сообщения об ошибках с дополнительной информацией об ошибке. - person apariyar; 20.08.2014
comment
Это работает................................................ ..... ([Drv DOB] == 0) || ([Drv DOB] == 101)? NULL (DT_DBTIMESTAMP): (DT_DBTIMESTAMP) (SUBSTRING ([Drv DOB], 1,2) + - + SUBSTRING ([Drv DOB], 3,2) + - + SUBSTRING ([Drv DOB], 5,2)) - person apariyar; 21.08.2014

У меня это работает! Спасибо всем

([Drv DOB] == "0") || ([Drv DOB] == "101") ? NULL(DT_DBTIMESTAMP) : (DT_DBTIMESTAMP)(SUBSTRING([Drv DOB],1,2) + "-" + SUBSTRING([Drv DOB],3,2) + "-" + SUBSTRING([Drv DOB],5,2))
person apariyar    schedule 21.08.2014