2013-05-23 9 views
14

Jestem nowy w SSIS i próbuję przekonwertować GetDate() na ciąg "DD-MM-RRRR". To wyrażenie I został zbudowany tak daleko:Wyrażenie SSIS: Konwertuj datę na ciąg

(DT_WSTR, 8) DAY(GETDATE()) + "-" + (DT_WSTR, 8) (MONTH(GETDATE()) - 1) + "-" + (DT_WSTR, 8) YEAR(GETDATE()) 

Problem mam jest miesiąc() konwertuje Miesiąca „23-4-2013” ​​do pojedynczego znaku, gdy chcę go w podwójnym charakterze, tak samo jak dzień. Jak mogę zrobić z niego podwójną postać, bez względu na to, jaki jest miesiąc?

Odpowiedz

31

Na SSIS można przejść z:

RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2) + "-" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , GETDATE()), 2) + "-" + (DT_STR, 4, 1252) DATEPART("yy" , GETDATE()) 

ekran Expression Builder:

Expression builder screen

+0

Dzięki, działa świetnie! Jak mogę odjąć od niego miesiąc? – resolver101

+2

Nie ma problemu, aby odjąć miesiąc, zmień wszystkie części 'GETDATE()' na 'DATEADD (" mm ", - 1, GETDATE())" pozostawiając wszystko inne, jak jest. –

+0

Jak mogę utworzyć wyrażenie tak, aby było "mm-dd-yy" + ".CSV"? – Si8

0

Jeśli, tak jak ja, próbują wykorzystać GETDATE() w wyrażeniu i mają pozornie nieracjonalne wymaganie (SSIS/SSDT wydaje mi się bardzo pracującym procesem, a nie dopracowaną ofertą), że chcę, aby ta data została wstawiona do SQL Server jako poprawna data (type = datetime), to ja und to wyrażenie pracy:

@[User::someVar] = (DT_WSTR,4)YEAR(GETDATE()) + "-" + RIGHT("0" + (DT_WSTR,2)MONTH(GETDATE()), 2) + "-" + RIGHT("0" + (DT_WSTR,2)DAY(GETDATE()), 2) + " " + RIGHT("0" + (DT_WSTR,2)DATEPART("hh", GETDATE()), 2) + ":" + RIGHT("0" + (DT_WSTR,2)DATEPART("mi", GETDATE()), 2) + ":" + RIGHT("0" + (DT_WSTR,2)DATEPART("ss", GETDATE()), 2) 

Znalazłem ten fragment kodu HERE