Я хочу преобразовать DATEADD ("d", - (DAY (GETDATE ())) + 1, GETDATE ()) в формат YYYY-MM-DD - PullRequest
0 голосов
/ 22 февраля 2019

Выражение

DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) 

правильно и дает мне 1/2/2019 3:45:02 PM

Но я хочу, чтобы мой ответ был как 2019-02-01 в SSIS

Пожалуйста, помогите мне

Ответы [ 2 ]

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

Если вы хотите получить значение 2019-02-01 (формат yyyy-MM-dd), вам следует преобразовать значение в строку и использовать следующее выражение:

LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)

Выход

2019-02-01

На основании официальной документации Cast (выражение SSIS) :

Когда строка приводится к DT_DATE или наоборот, используется языковой стандарт преобразования.Однако дата указывается в формате ISO ГГГГ-ММ-ДД, независимо от того, использует ли языковой стандарт формат ISO.

Если вам требуется возвращаемое значение типа DT_Date, просто добавьтеоперация CAST:

(DT_DATE)LEFT((DT_WSTR,50)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE()) ,10)

Обратите внимание, что в типе данных Date форматирование отсутствует, значения не сохраняются так же, как они отображаются.

Вывод

2/1/2019 12:00:00 AM

Что эквивалентно

2/1/ 2019 00: 00: 00

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

По какой-то причине SSIS представляет собой небольшую боль, когда дело доходит до обработки дат.По сути, вы должны дважды его разыграть ...

(DT_DATE)(DT_DBDATE)DATEADD("d",- (DAY(GETDATE())) + 1,GETDATE())

Примечание: оценочное значение 2/1/2019 12:00:00 AM.Но когда вы нажмете OK в Expression Builder, вы увидите значение, отображаемое как 2/1/2019.

Редактировать Насколько мне известно, изменить формат даты невозможно, даже еслис преобразованием его в строку, а затем вернуться к дате.Я бы не стал считать это проблемой - оставьте внутренний формат даты в покое, чтобы его мог обработать сервер.Формат даты должен действительно иметь значение только для целей отображения, которыми можно манипулировать на этапе SQL SELECT.

Существует ли причина, по которой вам требуется изменить формат даты для внутренней обработки?

...