Как преобразовать тип данных number в тип данных date в ssis

Привет, у меня есть данные файла csv, например: - (ActiveDate = 20180105), поэтому я хочу сохранить этот столбец в своей базе данных. Тип данных столбца моей базы данных - дата и время.

И при использовании преобразования данных как DT_Date я получаю эту ошибку: -

The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.

Итак, как я могу импортировать эти данные ActiveDate из моего Excel в мою базу данных как дата и время?

Можете ли вы помочь мне..?

Вы пробовали то, что предложил @Justin? Какую текущую ошибку вы получаете?

Abhishek 10.09.2018 11:35

Да, я получаю ЭТУ ОШИБКУ: - [Derived Column [36]] Error: An error occurred while attempting to perform a type cast. [Derived Column [48]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Derived Column" failed because error code 0xC0049064 occurred, and the error row disposition on "Derived Column.Outputs[Derived Column Output].Columns[DERIVED_ADMIT_DATE]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.

Sanjiv 10.09.2018 11:39

Перед выполнением CAST в Derived Column вы преобразовали входной Number в String с помощью Data Conversion?

Abhishek 10.09.2018 11:48

@Abhishek: - Да, я это сделал

Sanjiv 10.09.2018 11:52

В вашей реализации должно быть что-то не так, возможно, вы что-то упустили, потому что описанный метод работает очень хорошо.

Abhishek 10.09.2018 12:20
0
5
134
1

Ответы 1

Вы должны сначала преобразовать свой столбец YYYYMMDD в строку в элементе Data Conversion следующим образом:

  Input Column   Output Column   Data Type                      Length 
  IntDate       StringDate      Unicode string [DT_WSTR]        50  

а затем вы можете использовать эту формулу в элементе Derived Column для преобразования нового строкового столбца в реальную дату:

(DT_DATE)(SUBSTRING(StringDate,1,4) + "-" + SUBSTRING(StringDate,5,2) + "-" + SUBSTRING(StringDate,7,2))

Для данных с нулевым значением в столбце даты используйте эту формулу, эта формула изменит значение null в текущей дате:

isnull(StringDate)? GETDATE() : (DT_DATE)(SUBSTRING(StringDate,1,4) + "-" + SUBSTRING(StringDate,5,2) + "-" + SUBSTRING(StringDate,7,2))

Полученные результаты:

IntDate     StringDate  DateDate
20170809    20170809    2017-08-09 00:00:00.0000000

Привет, Джастин .. Я новичок в SSIS. Подскажите, пожалуйста, после преобразования данных в строку Unicode .. Как использовать формулу в производном столбце в ssis. ??

Sanjiv 10.09.2018 08:23

Как я могу достичь только даты (например: - 2017/08/09) этого формата в производном столбце. ?? и мне не нужно время

Sanjiv 10.09.2018 09:32

1. Для поиска «Пример производного столбца» в Google вам просто нужно вставить код и изменить StringDate на свой столбец. 2. Если вы пишете в базу данных, не имеет значения, какую дату вы вставляете.

Justin 10.09.2018 10:22

Привет, я сделал этот производный столбец .. но все еще получаю эту ошибку: - [Derived Column [48]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Derived Column" failed because error code 0xC0049064 occurred, and the error row disposition on "Derived Column.Outputs[Derived Column Output].Columns[DERIVED_ADMIT_DATE]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.

Sanjiv 10.09.2018 10:25

: - Эта ошибка тоже [Derived Column [36]] Error: An error occurred while attempting to perform a type cast.

Sanjiv 10.09.2018 10:30

Еще одна вещь: некоторые значения в моем исходном файле имеют нулевое значение. Это вызывает какие-то проблемы ..?

Sanjiv 10.09.2018 10:32

@jack у тебя есть какое-нибудь решение ..?

Sanjiv 10.09.2018 11:22

Я отредактировал свой ответ, используйте вторую формулу, если у вас есть null в столбце даты. Эта формула изменит значение null в текущей дате

Justin 10.09.2018 19:10

Другие вопросы по теме