2013-09-24 54 views
0

我目前遇到將ms sql表中的字符串字段轉換爲所需日期格式的問題。如何將字符串格式yyyy-mm-dd轉換爲dd/mm/yyyy

以前我一直用

CONVERT(date,c.INP_DATE ,103) 

但是這給我的錯誤

[Err] 22007 - [SQL Server]Conversion failed when converting date and/or time from character string. 

兩個採樣記錄我已經是2013年9月18日和2013年9月18日17:17: 32.0000000我從一個通過mysql導入。我需要這些轉換爲dd/mm/yyyy在適用的時候。

從任何大師任何幫助在那裏被理解:)

+1

你爲什麼要保存日期數據作爲一個字符串?那很糟!用戶一個日期時間。即使使用導入,您仍然可以在導入點處轉換並存儲到日期時間。 –

+0

數據主要來自MySQL和曾與日期格式問題previoulsy我能想到的是,以存儲爲串並轉換 – JazziJeff

+0

反正我是從現在選擇的表有DATETIME2如字段類型和格式,所以最簡單的方法仍然 – JazziJeff

回答

0

爲CONVERT正確的語法是

CONVERT(data_type(length),expression,style) 

其中DATA_TYPE指定目標的數據類型(帶有可選的長度) 應該是這樣這樣的:

CONVERT(VARCHAR(10),c.INP_DATE ,103) 
+0

是遇到日期probs但是這也沒有什麼區別 - 格式的靜態輸出爲yyyy-MM-DD – JazziJeff

+0

因爲你需要轉換爲最新第一。請參閱:http://stackoverflow.com/questions/18987990/converting-sql-date-formats-not-ending-up-the-same/18989353#18989353 –

+0

我轉換日期 - 見上面的問題:) – JazziJeff

4
DECLARE @a VARCHAR(50) = '2013-09-18' 
, @b VARCHAR(50) = '2013-09-18 17:17:32.0000000' 

SELECT CONVERT(VARCHAR(10),CAST(@a as DATE),103) 
, CONVERT(VARCHAR(10),CAST(@b as DATE),103) 
+0

好進步 - 這適用於日期,但對於日期和時間的第二次轉換即使當我將其更改爲varchar(19)時也會截斷時間 - 任何建議?試過日期時間而不是像以前那樣的日期和錯誤 – JazziJeff

+0

ok想起來就是這個意思,103似乎沒有時間,所以我已經建立了它,似乎沒有問題,除非任何人都可以清理它一點點CONVERT(char (10),CAST('2013-09-18 17:17:32'as DATE),103)+''+ CONVERT(CHAR(8),CAST('2013-09-18 17:17:32'as DATETIME),108) – JazziJeff

相關問題