2016-07-05 224 views
0

我有一個列RGSTR_DATEvarchar(10)數據類型的SQL Server中的表,它有一個像2016-01-231998-08-12等值...SQL Server轉換和CAST沒有返回正確的日期格式

我要選擇這些值轉換爲2016012319980812,等...

我試圖運行這些查詢:

SELECT CONVERT(DATE, CAST(RGSTR_DATE AS DATE), 112) 
FROM [project].[dbo].[my_table]; 

SELECT CONVERT(VARCHAR(10), RGSTR_DATE, 112) 
FROM [project].[dbo].[my_table]; 

但是,回來後仍結果,1998-08-12等...

我在做什麼錯?

+0

你是什麼意思回來?你沒有看到他們進入excel查看他們是你嗎? – Hogan

+0

我的意思是出現在SQL Server Management Studio底部的控制檯中的結果仍然顯示日期的連字符格式。 – John

回答

4

你嘗試

SELECT CONVERT(VARCHAR(10),cast(RGSTR_DATE as date),112) 
+0

這是有道理的......將RGSTR_DATE轉換爲日期,然後將其轉換爲格式爲的VARCHAR 112 – Hogan

+0

作爲一種副作用,這種方法可以保護您免受錯誤的日期字符串如「2016-13-05 '。如果您確定您的日期值,則按照John Pasquet的建議更換連字符會更快。投票在兩個... – Shnugo

+1

@Shnugo我同意,起初我喜歡約翰P的答案,但後來重新考慮,因爲我不信任用戶。他們可能很聰明,但他們真的很愚蠢 –

2

您正在將varchar轉換爲日期,但您只需刪除連字符即可。

SELECT REPLACE(RGSTR_DATE, '-', '') 
FROM [project].[dbo].[my_table] 
+0

謝謝,這也可以工作 – John