Es kommt vor, dass sprachabhängig Daten in unerwarteten Formaten zum Anzeigen aus Datenquellen geliefert werden. Genauso kann eine Datenabfrage Daten in englischem, deutschen oder sonstigen Format enthalten, welche Sie in Reporting Services aber anders anzeigen möchten. Meistens sind diese Zeichenketten keine Daten vom Datentyp Date bzw. können als solche nicht automatisch erkannt und einfach konvertiert werden. Was können Sie tun, um ein Datum zuverlässig aus einer Zeichenkette zu konvertieren und im gewünschten Format anzuzeigen?

Manche Daten werden nicht im ISO-Format (bspw. 2013-11-16) aus Datenquellen geliefert, sondern in länderspezifischen Formaten wie 11/16/13. Letztere Zeichenkette können Sie mit der Funktion CDate() nicht in den Datentyp Date konvertieren. Sie müssten jetzt wissen, welcher Teil das Jahr, Monat bzw. Tag ist, die Zeichenkette auseinandernehmen sowie wieder so zusammensetzen, dass die CDate()-Funktion funktioniert. Das kann sehr mühselig sein.

Darüber hinaus ist es nicht immer sinnvoll, die Bezeichnungen in der Datenquelle selbst zu ändern – wenn Sie darauf überhaupt Zugriff haben.

Ein einfacherer Weg ist das Verwenden der Parse()-Funktion. Hierfür brauchen Sie nur zu wissen, welchem Land das Datumsformat zuzuordnen ist. In der Datenbank wird sich ein einmal festgelegtes Format nur sehr selten ändern.

Wenn Sie also wissen, dass die Zeichenkette bspw. dem amerikanischen Standard entspricht, dann können Sie den folgenden Ausdruck verwenden:

DateTime.Parse(Fields!Day.Value, new System.Globalization.CultureInfo(“en-US”))

Ersetzen Sie einfach „en-US“ mit der Zeichenkette für die entsprechende Kultur. Nun erhalten Sie ein Datum, auf welches Sie alle Datumsfunktionen, einschließlich der Format()-Funktionen anwenden können.