2011-03-10 44 views
0

我有一個Excel文件,其中包含一列滿是日期的日期,格式爲dd/mm/yyyy格式。當我嘗試使用openrowset導入它時,它說有一個數據類型不匹配。我有一個表格,其中日期定義爲date。現在,我知道SQL Server中的默認日期格式是yyyy-mm-dd。我怎樣才能避免這種衝突?有沒有辦法讓我的默認date類型爲dd/mm/yyyy?我需要每天做這個導入操作,並且必須是自動化的,所以我承擔不起它之間的失敗。我嘗試使用sp_addlanguage使它成爲英國作爲默認日期類型是dd/mm/yyyy那裏,但它沒有工作:(。我使用SQL Server 2008和Windows 7,如果這是任何幫助請幫我謝謝如何在SQL Server 2008中使默認日期格式爲dd/mm/yyyy?

+0

它有助於更​​改Excel文件中的日期格式嗎?或者是被忽略的格式? – Svish 2011-03-10 10:53:50

+0

@Svish:這是一個固定的格式,將來自其他地方,不能混淆。 – CodingInCircles 2011-03-10 10:56:41

回答

1

你可以在插入之前,所以,在OPENROWSET語句,這樣你選擇的領域,你可以用CONVERT發言圍繞着它CONVERT傳入的數據下面是一個例子!。:

print convert(date,'19/07/2010',103) 

這是英國式的日期,但如果你運行它,你可以看到它它轉換成SQL友好的格式。

+0

@Tom:我有以下的SQL查詢:'SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0; IMEX = 1; HDR = NO; DATABASE = D:\ Nemmadi Project \ Dummy Bank Statement .xls','Select * from [Sheet1 $]')'我應該在哪裏添加'CONVERT'語句?此外,我可以在CSV格式中通過「批量插入」成功插入它。文件中的日期格式爲:2011年3月1日(2011年3月1日)。我做了:'設置語言'英式英語' 從'D:\ Nemmadi Project \ Dummy Bank Statement.csv'批量插入bank_report與 (firstrow = 2,maxerrors = 0,FIELDTERMINATOR =',',ROWTERMINATOR ='\ n ')' – CodingInCircles 2011-03-10 11:26:44

+0

@Tom:但是當我查看錶格時,日期被插入爲:2011-03-01 00:00:00.000。該怎麼辦?在定義表格時,當我試圖將日期列作爲「DATE」類型時,「BULLK INSERT」拒絕工作,只有在創建「DATETIME」時才工作。任何解決方法? – CodingInCircles 2011-03-10 11:29:51

+0

首先,如果您指定了實際的行(您在完成*後會在行標題中看到名稱),而不是選擇*。我們假設它們是:Field1,Field2,Field3,而Field2是日期列。然後您可以重新編寫語句:SELECT Field1,CONVERT(date,Field2,103),Field3 FROM OPENROWSET ...這將是我的首選方法,而不是搞亂語言設置......但如果它適合您.. – 2011-03-10 11:53:20