我的同事們將excel工作表中的日期,貨幣和百分比格式化爲「常規」,然後將表導出爲標籤分隔文本文件。這樣做是爲了捕獲所有原始數據並消除格式化和舍入。例如30%返回到原始值0.29854。導出文件被導入到SQL Server中。Excel文本或通用格式化日期SQL Server中的導入和轉換
我的問題是日期得到設置爲一個exell數字,我很難將其轉換爲日期,一旦它被導入到SQL Server中。例子如下:
Date Fmt General Fmt
9/3/2008 39694
7/1/2010 40360
5/4/2011 40667
有誰知道我可以導入通用格式值到SQL Server爲VARCHAR,然後將其轉換回一個日期嗎?
顯而易見的答案是不將日期格式設置爲常規,但我無法控制此過程並且無法更改它。
我試圖使用DATEADD()來重新轉換日期從1/1/1900。就excel而言,這是日期1。有關詳情,請參閱以下內容:http://www.exceltactics.com/definitive-guide-using-dates-times-excel/#How-Excel-Stores-Dates
我發現使用此解決方案的問題是其兩天休息。
select dateadd(d,39694,'1/1/1900') = 9/5/2008 { should be 9/3/2008 }
select dateadd(dd,40360,'1/1/1900') = 7/3/2010 { should be 7/1/2010 }
select dateadd(dd,40677,'1/1/1900') = 5/6/2011 { should be 5/4/2011 }
我承認這很可能是一個舍入誤差,但有沒有更好的方式來將它轉換爲捕獲在SQL Server中正確的日期?
如果我簡單地調整到DateAdd(d,#####,'12/30/1899'),我確實得到了正確的答案,但在未來的某個地方,這也將是一個休息日。我不夠聰明,想知道這可能發生什麼時候...
感謝您的任何幫助。
這麼看這個評論,並假設你在01/03/1900之前沒有任何日期,在你的代碼中硬編碼'-2'似乎是安全的。 –