Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DB2C#日期转换_C#_Date - Fatal编程技术网

DB2C#日期转换

DB2C#日期转换,c#,date,C#,Date,我正在将大约60个数据表从DB2迁移到SQL server。 我遇到的问题是DB2表中的Date(我使用的是工作轻松的)字段。 这些表格中有大约15年的数据。随着时间的推移 数据类型字段或字符串(Char)中的大多数表中都存储了日期 输入字段。其中一些表格包含超过100万条记录 除此之外,日期还以各种格式存储 这里有一些 23.06.2005 06.23.2005 2005.06.23 23.06.05 06.23.05 23/06/2005 06/23/2005 2005/06/23 23/

我正在将大约60个数据表从DB2迁移到SQL server。 我遇到的问题是DB2表中的Date(我使用的是工作轻松的)字段。 这些表格中有大约15年的数据。随着时间的推移 数据类型字段或字符串(Char)中的大多数表中都存储了日期 输入字段。其中一些表格包含超过100万条记录

除此之外,日期还以各种格式存储

这里有一些

23.06.2005
06.23.2005
2005.06.23
23.06.05
06.23.05

23/06/2005
06/23/2005
2005/06/23
23/06/05
06/23/05

23-06-2005
06-23-2005
2005-06-23
23-06-05
06-23-05
当DB2字段是数据类型字段时,我没有问题

DateTime dt = DateTime.Parse(dsSourceData[j].ToString(), new CultureInfo("en-CA"));
但是,当DB2字段是字符串类型时,我确实有一个问题。上述转换 失败了

有人知道我如何克服这个问题吗

我将非常感谢您提供的帮助

问候


Iain

不可能提供有效的解决方案,因为您有两种相互矛盾的格式,其中日期和月份处于互换位置:“23.06.05”和“06.23.05”。例如,这个日期是什么意思:
“07.08.09”

但是,通常使用带有多格式字符串的
DateTime.TryParseExact

string[] formats={"dd.MM.yyyy", "yyyy.MM.dd", "dd.MM.yy"}; // to be continued
CultureInfo culture = new CultureInfo("en-CA");
var validDates = dateStrings
    .Select(s => (valid:DateTime.TryParseExact(s, formats, culture, DateTimeStyles.None, out var dt),date:dt))
    .Where(x => x.valid)
    .Select(x => x.date)
    .ToArray();

阅读:

我上面展示的示例采用表中的格式。DB2类型字段为L(日期类型)或CHAR。日期类型字段没有出现问题。正是字符/字符串类型给了我一个问题。使用.Substring()几乎是不可能的“不可能提供有效的解决方案…”-如果有进一步的信息可以确定正在使用的日期样式,则可以提供解决方案或部分解决方案。例如,一个特定的用户或团队可能被发现(经过仔细分析)具有一致的风格,或者不同的表格可能有不同的约定(他提到了60个表格),或者不同的约定可能被发现在不同的时代适用,或者系统中可能有其他可用的数据可以从中得出推论。(1/2)此外,少量错误也可能与统计无关,或者可以通过对明确日期的相对频率进行统计分析,并相应地对模糊日期进行加权,从而进行充分纠正。例如,只有不超过12天的日期与月份不明确,因此可以从存在涉及日期13-31的明确日期推断出每种日期格式的相对流行程度。还可以分析每个可能日期所在的一周中的几天。有了15年的数据,无论如何,这很可能是一项统计工作。(2/2)非常感谢您的回复。这给了我很多思考和一些好的建议。我正在查找字段数据类型,并尝试以这种方式处理它。我可以用不同的方式处理日期和字符类型。我已经在AS400上修改并创建了一个程序,将所有文件中的数据格式修改为单一格式。我不想为所有的闲聊而烦恼,谢谢你的帮助。非常感谢