2015-06-03 64 views
0

在我導入到SQL Server數據庫的文件中,日期在不同列中的格式不同。我一直有問題,用(例如)02-06得到輸入爲2月6日和6月2日,我將使用在SQL Server 2012中更改日期格式

SELECT [entry_date] = DATE_FORMAT([Date], GET_FORMAT(DATE,'EUR')) 
FROM table_name 

規範數據庫中的日期,但我首先需要一種方法來告訴服務器是什麼每個源列的日期格式,所以SQL Server將知道如何重新安排日期:

  • 2015年2月6日= DD-MM-YYYY
  • 2015年6月2日= MM-DD- yyyy
  • 2015-Jun-02 = yyyy-month-dd
+0

什麼格式,你希望你的最終日期嗎?你能否也包括這一點? – FutbolFan

+0

它可以是任何,只要它是一致的。 dd-mm-yyyy最有可能。 – jjjjjjjjjjj

+0

您可以考慮解析函數並將其應用於查詢中的輸入日期:http://msdn.microsoft.com/en-us/library/hh213316.aspx – russ

回答

0

你也許可以做這樣的事情,如果每個列的格式不同:

select convert(varchar,cast('06-02-2015' as date) ,105) col1 
     ,convert(varchar,cast('02-06-2015' as date) ,110) col2 
     ,convert(varchar,cast('2015-Jun-02' as date),105) col3 

結果集:

|col1  ||  col2  ||  col3  | 
|02-06-2015 ||  02-06-2015 ||  02-06-2015| 
+0

這適用於服務器,但徹底打破了用於導入數據的SSIS包。 SSIS將源數據移動到登臺表,然後在觸發器中使用包含日期轉換的腳本來格式化數據並將其移動到主表中。它告訴我「從字符串轉換日期和/或時間時轉換失敗。」 – jjjjjjjjjjj

+0

對不起,我剛剛看到了這一點,SSIS部分的哪一部分是你在使用此轉換?它是在最終加載期間加載臨時表還是後期臨時存儲?不是說它可能會有所作爲,但是我認爲你會得到這個錯誤的唯一原因是如果你的數據沒有被正確地「格式化」以轉換爲實際的日期。 – FutbolFan

+0

所有的Excel數據都有正確的格式。我仔細檢查。轉換髮生在臨時表和主表之間。一切都是nvarchar,直到最後移動到主表中,該主表具有該列的日期格式。當數據處於nvarchar格式時,我仍然得到日期錯誤,這很奇怪。 – jjjjjjjjjjj