2013-05-23 12 views
14

Sono nuovo di SSIS e sto cercando di convertire un GetDate() in stringa "GG-MM-AAAA". Questa è l'espressione che ho costruito finora:Espressione SSIS: conversione data in stringa

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

Il problema che ho è Month() converte il mese "23-4-2013" ad un singolo carattere quando lo voglio nel doppio carattere, uguale al giorno. Come posso trasformarlo in un doppio personaggio, indipendentemente dal mese in cui si trova?

risposta

31

Per SSIS si potrebbe andare con:

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

schermo Generatore di espressioni:

Expression builder screen

+0

Grazie, funziona alla grande! come faccio a sottrarre un mese da esso? – resolver101

+2

Nessun problema, per sottrarre un mese, cambia tutte le parti 'GETDATE()' dell'espressione in 'DATEADD (" mm ", - 1, GETDATE())' lasciando tutto il resto così com'è. –

+0

Come posso rendere l'espressione in modo che sia "mm-dd-yy" + ".CSV"? – Si8

0

Se, come me, si sta tentando di utilizzare GETDATE() all'interno di un'espressione e hanno l'apparentemente irragionevole requisito (SSIS/SSDT sembra davvero un lavoro in corso per me, e non un'offerta lucida) di volere che la data venga inserita in SQL Server come data valida (tipo = datetime), quindi I fo und questa espressione al lavoro:

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

ho trovato questo frammento di codice HERE