2013-05-23 14 views
14

Ich bin neu in SSIS und ich versuche, eine GetDate() in Zeichenfolge "DD-MM-YYYY" zu konvertieren. Dies ist der Ausdruck, den ich bisher gebaut habe:SSIS-Ausdruck: Datum in Zeichenfolge konvertieren

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

Das Problem, das ich habe ist Monat() wandelt der Monat „23-4-2013“ zu einem einzelnen Zeichen, wenn ich es in Doppel Charakteren will, wie tag. Wie mache ich es zu einem doppelten Charakter, egal in welchem ​​Monat es ist?

Antwort

31

Für SSIS könnten Sie gehen mit:

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()) 

Expression Builder-Bildschirm:

Expression builder screen

+0

Danke, funktioniert super! Wie subtrahiere ich einen Monat davon? – resolver101

+2

Kein Problem, um einen Monat zu subtrahieren, ändern Sie alle 'GETDATE()' Teile des Ausdrucks in 'DATEADD (" mm ", - 1, GETDATE())' alles andere wie es ist. –

+0

Wie kann ich den Ausdruck so machen, dass er "mm-dd-yy" + ".CSV" ist? – Si8

0

Wenn, wie ich, Sie versuchen, GETDATE() innerhalb eines Ausdrucks zu bedienen und haben die scheinbar unvernünftige Anforderung (SSIS/SSDT scheint sehr eine Arbeit im Gange zu sein, und nicht ein poliertes Angebot) dieses Datum in SQL Server als gültiges Datum eingefügt werden (Typ = datetime), dann ich für und dieser Ausdruck zu arbeiten:

@[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) 

Ich habe diesen Code-Schnipsel HERE

Verwandte Themen