Как сохранить значение даты в дд / мм / гггг в Excel из SSIS, где TimeZone = Восток на сервере - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть пакет служб SSIS, в котором я выполняю хранимую процедуру и сохраняю набор результатов в виде переменной типа объекта (как настраиваемой) в потоке управления, а в потоке данных я использую сценарий для извлечения данных изпеременная типа объекта, сохраняющая набор результатов в файле Excel.

Все работает хорошо, кроме столбца даты.Он должен быть в формате дд / мм / гггг, однако, что бы я ни пытался, я не мог помешать ему быть в формате м / д / гггг в Excel.

Я пробовал:

1 - это добавлено в строку подключения Excel ConnectionManager -> Excel 12.0;HDR=Yes;IMEX=0;Readonly=False и Excel 12.0;HDR=Yes;IMEX=1;Readonly=False.Оба не работали.

2 - Добавлена ​​задача «Производный столбец», получен новый столбец «DerivedMyDate» как STR, WSTR, Date.Этот столбец использовался для сохранения значения даты в файле Excel, где тип установлен как STR и DATE.Ни одно из моих испытаний не сработало.

3 - Добавлена ​​задача преобразования данных, пробовал все то же, что я пробовал на 2-м шаге, ни одно не сработало.

4 - Добавлена ​​фиктивная первая строка вExcel, где столбец данных похож на 15/01/1900.Не работает, он добавляет другие строки ниже, где значения даты в формате m/d/yyyy.

Проверил эти страницы, ответы у меня не сработали: Проблема формата даты при использовании SSIS для Excel в SQLСервер

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/7e34a0af-a744-4a51-b925-3284d0fba296/problem-in-date-format-while-exporting-to-excel-destination-from-flat-file-source-in-ssis?forum=sqlintegrationservices

TimeZone моего ПК: (UTC-05: 00) по восточному времени (США и Канада), изменить это не вариант.

Буду признателен за любую помощь или совет.

1 Ответ

0 голосов
/ 27 ноября 2018

Я постараюсь предложить немного изменить запрос T-SQL в следующем для вас решении.На этапе извлечения данных из хранимой процедуры, если она возвращает не так много столбцов, вы должны объявить табличную переменную с именами, типами и количеством столбцов, присвоенными столбцам вашей хранимой процедуры, например @var.Затем вам нужно передать выполненный сохраненный результат процедуры в переменную

INSERT INTO @VAR
EXEC sp_your_stored_prodedure

. На последнем шаге вы должны извлечь данные не из хранимой процедуры, а из @var, и добавить в оператор выбора новое поле с помощьюCONVERT Функция T-SQL с форматом даты 103:

SELECT
      v.*
      ,CONVERT (NVARCHAR, v.date_field, 103) as target_date_format
FROM @var AS v

После этого вы можете работать с этим потоком данных и датой в соответствующем формате.

...