Использование служб SSIS и T-SQL для преобразования даты в дд.мм.гггг - PullRequest
0 голосов
/ 13 февраля 2019

Когда я использую T-SQL для преобразования даты и времени в дд.мм.гггг для вывода в формате csv с использованием SSIS, файл создается с дд-мм-гггг чч: мм:ss это не то, что мне нужно.

Я использую:

convert(varchar,dbo.[RE-TENANCY].[TNCY-START],104)

, что кажется правильным в SSMS.

Какой лучший способ справиться спреобразование будет выводиться из SSIS?Не так просто, как я думал.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Это работает для меня.

Использование вашего запроса в качестве основы для управления пакетом

SELECT 
    CONVERT(char(10),CURRENT_TIMESTAMP,104) AS DayMonthYearDate

Я явно объявил длину для нашего значения dd.mm.yyyy, и так как он всегдабудет 10 символов, давайте использовать тип данных, который отражает это.

Запустите запрос, вы можете видеть, что он правильно производит 13.02.2019

В SSIS я добавил источник OLE DB впоток данных и вставил в мой запрос

enter image description here

Я подключил плоский файл назначения и запустил пакет.Как и ожидалось, строка, сгенерированная запросом, вошла в поток данных и, как и ожидалось, оказалась в выходном файле.

enter image description here

Если вы испытываетев противном случае первое, что я проверю, - это двойной щелчок на строке между вашим источником и следующим компонентом и выбор метаданных.Посмотрите, что сообщается в столбце начала аренды.Если он не указывает dt_str / dt_wstr, то SSIS считает, что тип данных является вариантом даты, и применяет к формату правила, специфичные для локали.Вам также может понадобиться проверить, как определяется столбец в диспетчере соединений с плоскими файлами.

0 голосов
/ 13 февраля 2019

Наиболее точное управление форматом вывода даты может быть достигнуто с помощью T-SQL FORMAT().Он доступен с SQL Server 2012. Он немного медленнее , чем CONVERT (), но дает желаемую гибкость. Пример:

SELECT TOP 4
       name,
       FORMAT(create_date, 'dd.MM.yyyy') AS create_date
FROM sys.databases;


name    create_date
--------------------
master  08.04.2003
tempdb  12.02.2019
model   08.04.2003
msdb    30.04.2016

ps учитывает, что FORMAT() производит вывод NVARCHAR,которая отличается от вашей исходной логики разговора, поэтому, возможно, потребуется применить дополнительное приведение к VARCHAR (10))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...