2016-09-18 101 views

回答

1

下面是使用CONVERT功能與風格105

DECLARE @datetime varchar(50)='30072016 23:59:59' 
SELECT CONVERT(datetime,stuff(stuff(@datetime,3,0,'-'),6,0,'-'),105) 

一種方式由於您的當前日期時間格式不與任何的本地日期時間格式匹配SQL SERVER,所以我們需要轉換爲一種格式,SQL服務器可以讀取。

SQL SERVER可以讀取這種格式DD-MM-YYYY HH:MM:SS。要在day,monthyear之間插入-,請使用STUFF函數。插入後,我們可以將其轉換爲datetime

+0

這似乎工作。你能解釋一下嗎?試圖學習!而且,它引入了我不需要的毫秒部分..?如何刪除? –

+1

閱讀有關將字符串放入另一個字符串的'stuff'功能。閱讀關於'datetime'的第二部分評論。一切都記錄在案。 –

+1

@Rohinibaskaran - 增加了解釋..不要擔心毫秒,因爲它不存在您當前的格式。它將始終爲零。 –

2

一種方法2012+將是單獨做的日期和時間轉換:

select (datefromparts(substring(col, 5, 4) + 0, substring(col, 3, 2) + 0, left(col, 2)) + 
     convert(time, right(col, 8)) 
     ) as dt_value 

,其實這可以在早期版本的工作,你只需要使用不同的功能,因爲datefromparts()不支持的。

0

這與SQL Server本機可解析的任何格式都不匹配。

因此,我的建議是:

  • 使用字符串操作(LEFTSUBSTRING)將其轉換成一個格式原生SQL服務器解析的,例如,YYYY-MM-DD HH:MM:SS(樣式120 ,「ODBC canonical」),

  • 然後使用CONVERT將其轉換爲日期時間。