web-dev-qa-db-fra.com

Expression SSIS: convertir la date en chaîne

Je suis nouveau sur SSIS et j'essaye de convertir un GetDate () en chaîne "DD-MM-YYYY". C'est l'expression que j'ai construite jusqu'à présent:

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

Le problème que j'ai, c'est Month () convertit le mois "23-4-2013" en un seul caractère lorsque je le souhaite en caractère double, comme le jour. Comment puis-je en faire un caractère double, peu importe quel mois il est?

17
resolver101

Pour SSIS, vous pouvez aller avec:

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

Écran du générateur d'expression:

Expression builder screen

36
Milen Kindekov

Quelque chose de plus simple que ce que @Milen a proposé mais cela donne AAAA-MM-JJ au lieu du JJ-MM-AAAA souhaité

SUBSTRING((DT_STR,30, 1252) GETDATE(), 1, 10)

Écran du générateur d'expression:

 enter image description here

4
Max S.

Si, comme moi, vous essayez d'utiliser GETDATE() dans une expression et que la condition apparemment déraisonnable (SSIS/SSDT me semble être un travail en cours, et non une offre raffinée) de vouloir que cette date soit insérée dans SQL Server comme date valide (type = datetime), alors j'ai trouvé cette expression qui fonctionne:

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

J'ai trouvé cet extrait de code ICI

1
Zach Smith