2016-07-21 9 views
0

Ich habe eine flache Datei, die mit einer Spalte "Datum". Das Problem ist, dass Datum SSIS Überprüfen Sie das Datumsformat mit bedingten Split

01-Jan-16 oder

als

kommen könnte
01Jan2016 

Wenn ich dies in einer abgeleiteten Spalte laufen

(DT_DBDATE)(SUBSTRING(bene_dob,1,2) + "-" + SUBSTRING(bene_dob,3,3) + "-" + SUBSTRING(bene_dob,7,4)) 

es behandelt das zweite Datum in Ordnung, aber wirklich vermasselt die erste Datum.

Ich versuche, dies durch eine bedingte Aufteilung zu behandeln, aber ich bin mir nicht sicher, wie es weitergeht.

Wie überprüfe ich dieses Datumsformat in einer bedingten Aufteilung?

Oder wenn Sie einen alternativen Vorschlag haben, bin ich offen für Ideen.

Dank

Antwort

0

Ersetzen Sie die Bindestriche durch eine leere Zeichenfolge vor der abgeleiteten Spalte, damit alle Zeilen das gleiche Format haben (01Jan2016). Sie müssen auch die ersten beiden Ziffern des Jahres hinzufügen, wenn sie fehlen.

Oder, wenn Sie wirklich eine bedingte Aufteilung verwenden möchten, nur auf das Vorhandensein des Bindestrich-Zeichens testen und basierend darauf, ob es in der Zeichenfolge ist oder nicht.

+0

Danke, das ist der einfachste Weg soweit. – gnixon14

0

A quick and dirty-Methode normalisieren die Datumsspalte wäre, so ist es der unerwünschten Zeichen Streifen (‚-‘ in diesem Fall) und dann abgeleitete Spalte Ausdruck wie so gelten:

(DT_DBDATE)(SUBSTRING(REPLACE(bene_dob, "-", ""),1,2) + "-" + SUBSTRING(REPLACE(bene_dob, "-", ""),3,3) + "-" + SUBSTRING(REPLACE(bene_dob, "-", ""),7,4)) 
0

Ich würde alle Datumsformate in das gleiche Format vor der weiteren Verarbeitung bekommen, kann dies entweder über SQL oder eine Datenkonvertierung in SSIS tun.