In Bezug auf Datumskonvertierungen stößt man bei den Boardmitteln von SSIS manchmal an die Grenzen. In solchen Fällen greife ich gerne auf .NET zurück, welches mit der DateTime class und den Methoden wie beispielsweise Convert.ToDateTime(String), DateTime.Parse() und DateTime.ParseExact() sehr viele Möglichkeiten bietet.

Hierbei bevorzuge ich die Verwendung von DateTime.ParseExact(). Hierzu ein paar kleine Beispiele:

Beispiel 1: Spalte [Datum] im Format dd.mm.yyyy und Spalte [Uhrzeit] im Format hh:mm:ss

Als erstes fügt man seinem Data Flow eine [Script Component] vom Typ „Transformation“ hinzu.

Daraufhin öffnet man die Eigenschaften der Komponente und wählt die Input Columns aus.

Da wir auch ein Datum bestehend aus den beiden Spalten generieren möchten, erstellen wir unter [Inputs and Outputs] eine neue Ausgabespalte.

Zu guter Letzt benötigen wir noch die Transformation an sich in .NET. Hierzu wählt man unter [Script] die gewünschte Programmierspache aus C# oder VB.NET. und editiert das Script.

Das Script in C# für die Konvertierung des Datums könnte folgendermaßen aussehen:

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        string iDatum = Row.Datum;
        string iUhrzeit = Row.Uhrzeit;
        string iDateTime = iDatum + ' ' + iUhrzeit;
        DateTime oDateTime = DateTime.ParseExact(iDateTime, "dd.MM.yyyy HH:mm:ss", null);
        Row.DateTime = oDateTime;
    }

Im ersten Schritt werden die beiden Variablen iDatum, iUhrzeit die Inhalte der Spalten (Row) zugewiesen und dann zu iDateTime als eine neue Variable verknüpft. Daraufhin wird basierend auf diesen neuen String die Konvertierung (ParseExact mit dem genauen Format dd.MM.yyyy HH:mm:ss) durchgeführt und der Output Spalte Row.DateTime zugewiesen.