IBM iSeries サーバーから MSSQL 2008 R2 データベースにデータをインポートするプログラムに取り組んでいます。残念なことに、一部の開発者はかなり前に日付を 10 進数として格納することを決定し、日付の格納に使用されている CYYMMDD 形式を実質的に破っています。
たとえば、その形式では、1995 年 8 月 1 日は 0950801 として保存されます。しかし、実際にデータベースに保存されているのは 95081 であり、これを System.DateTime に変換しようとすると、明らかに例外がスローされます。
先頭の 0 が欠けているという単純な問題であれば、文字列を変換する前に簡単にそれを文字列に追加できます。しかし、3 桁か 4 桁しかない日付がいくつか (実際には数千) あります。たとえば、1128 として保存されている日付があります。それに先頭の 3 つの 0 を付けて変換すると、明らかに間違った日付が生成されます。
それで、これらの日付を解析する信頼できる方法を知っている人はいますか? SQL select ステートメントを直接使用するか、C# で何らかの操作を行いますか? それとも、そもそも 3 桁と 4 桁の日付が正しく入力されていないと仮定して、そのような日付を破棄するだけですか?