我正在研究将数据从IBM iSeries服务器导入到MSSQL 2008 R2数据库的程序。不幸的是,一些开发人员很久以前决定将日期存储为十进制类型,这有效地打破了用于存储日期的CYYMMDD格式。将IBM iSeries DB2小数日期类型转换为DateTime对象
例如,以这种格式,1995年8月1日将被存储为:0950801.然而,实际存储在数据库中的是95081,如果我尝试将其转换为System.DateTime,那么显然会引发异常。
如果这是一个简单的缺少前导0的问题,我可以很容易地将它添加到字符串,然后再尝试转换它。然而,有几个(数千个,真的)日期只有3或4位数字,我真的不知道该怎么做。例如,存储的日期为1128.我不知道该怎么做。如果我只用3个前导0来转换它,它会产生一个明显不正确的日期。
那么,有没有人知道解析这些日期的可靠方法?直接通过SQL select语句,或者在C#中进行一些操作?或者我只是假设3位和4位数字的日期从来没有正确输入过,并且放弃了这样的日期?
你知道日期应该代表什么吗?他们是DOB等...? – 2013-05-07 21:19:58
@Robbie他们代表不同的东西,包括DOB的,但也是客户账户历史表中的交易日期。对于交易日期,我可以对年度进行一番探讨,因为显然在我们公司做或者将来之前交易不可能存在。但是这对生日不起作用... – Jedediah 2013-05-07 21:23:16
我不认为3或4位数字的日期本身就是一个问题。我倾向于将它们原样导入并稍后处理。你见过这个吗? http://www.techrepublic.com/forum/questions/101-278438/cyymmdd-format-in-db2 – 2013-05-07 21:30:16