J'ai un rendez-vous 20130131
en csv que j'essaie de convertir en 2013-13-01
en utilisant la colonne dérivée dans SSIS. J'ai utilisé cette expression mais elle ne semble pas fonctionner.
(DT_DBTIMESTAMP) (SUBSTRING (DATE_DECISION_TO_REFER, 1,2) + "-" + SUBSTRING (DATE_DECISION_TO_REFER, 3,2) + "-" + SUBSTRING (DATE_DECISION_TO_REFER, 5,2))
Comment réécrire cette expression pour produire la sortie correcte avec une valeur de type de données DT_DBTIMESTAMP
?
Selon Kyle Hale suggestion, voici ma réponse
SUBSTRING([DATE_DECISION_TO_REFER],1,4) + "-" +
SUBSTRING([DATE_DECISION_TO_REFER],5,2) + "-" + SUBSTRING([DATE_DECISION_TO_REFER],7,2)
Pour vous éduquer afin que vous ne soyez plus jamais confronté à ce problème, voici comment fonctionne l'expression
Get 4 characters from DATE_DECISION_TO_REFER starting at position 1, add a dash,
get 2 characters from DATE_DECISION_TO_REFER starting at position 5,
add a dash then add 2 characters from DATE_DECISION_TO_REFER starting at position 7.
J'espère que cela vous aidera.
Fast Parse est une solution beaucoup plus élégante
Vous devez utiliser l'expression pour formater la date en yyyy-MM-dd
comme indiqué ci-dessous. Cette expression formatera la valeur entrante 20130131
à 2013-01-31
puis sera converti en type de données approprié. L'expression utilise la colonne entrante nommée Column0
.
(DT_DBTIMESTAMP) (SUBSTRING (Column0,1,4) + "-" + SUBSTRING (Column0,5,2) + "-" + SUBSTRING (Column0,7,2))
Votre expression prend la valeur 20130131
, puis la conversion incorrecte en la valeur 20-13-01
. Il s'agit d'un format non valide pour les dates et, par conséquent, l'expression ne parvient pas à taper le cast en DT_DBTIMESTAMP
Type de données.