我正在研究將數據從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