Как изменить формат даты с ГГГГ-ММ-ДД на ММ / ДД / ГГГГ в SSIS? - PullRequest
0 голосов
/ 01 ноября 2019

Я загружаю плоский файл в таблицу базы данных, и мне нужно изменить формат даты с YYYY-MM-DD в плоском файле на MM / DD / YYYY в таблице базы данных. Я попытался использовать следующий оператор в производных столбцах, как показано ниже, но не знал, как настроить оператор, поэтому получил сообщение об ошибке, в котором говорится, что SSIS не может разобрать выражение.

 Derived Column Name:  EFF_DATE 
 Derived Column:       Replace EFF_DATE
 Expression:           TOKEN( MONTH([EFF_DATE]),"//|",DAY([EFF_DATE]),"//|",YEAR([Copy of EFF_DATE]) )
 DATA TYPE:            databasetimestamp[DT_DBTIMESTAMP]

Может ли кто-нибудь мне помочьопределить, как изменить формат столбца в производном столбце? В противном случае, пожалуйста, дайте мне знать, если есть другой способ сделать это. Спасибо.

Этот вопрос отличался от предыдущего. В последнем вопросе столбец даты имел тип данных DateTime. Но в этом вопросе дата является строкой, и когда я использовал Производный столбец, чтобы изменить дату с ГГГГ-ММ-ДД на ММ / ДД / ГГГГ, он сохранил ведущие нули в ММ и ДД. Затем возникла проблема не только изменения формата даты, но и удаления начальных нулей из месяца и дня.

Однако я исследовал и нашел лучшее решение в SSIS для изменения значения даты с помощью строки типа данных, поскольку база данных, с которой я работаю, хранит дату в этом формате.

Iудалил производный столбец из моей задачи источника данных и добавил задачу «Выполнить SQL» в потоке управления, затем добавил следующий оператор обновления, который не только изменяет формат с YYYY-MM-DD на MM / DD / YYYY, но и удаляетведущие нули от месяца и дня. Функция CONCAT Я использовал приведенный ниже пример SQL, изменяя формат с YYYY-MM-DD на MM / DD / YYYY, в то время как функция Convert изменяет значения MM и DD на тип данных INT, который удаляет все начальные нули. Это решение позволило дате оставаться строкой, поскольку это был формат таблицы, с которым мне приходилось работать.

UPDATE [StagingTable] 
SET START_DATE = 
CONCAT( CONVERT(INT, SUBSTRING(START_DATE, 6,2)), '/', CONVERT(INT, RIGHT(START_DATE, 2)),'/', LEFT(START_DATE,4) )]

Спасибо всем за их комментарии, поскольку они помогли мне мыслить нестандартно и определить это решение.

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