我有一個varchar
的列,具有這種格式的如何爲varchar「DDMMYYYY HH:MM:SS」轉換成DATETIME在SQL Server
DDMMYYYY HH:MM:SS
例如,30072016 23:59:59
日期,我需要插入此到另一個表中的DATETIME
列中。
我嘗試過各種convert
選項和所有似乎給這個錯誤
varchar數據類型到datetime數據類型的轉化在外的範圍內的值導致
請幫助。在SQL Server
我有一個varchar
的列,具有這種格式的如何爲varchar「DDMMYYYY HH:MM:SS」轉換成DATETIME在SQL Server
DDMMYYYY HH:MM:SS
例如,30072016 23:59:59
日期,我需要插入此到另一個表中的DATETIME
列中。
我嘗試過各種convert
選項和所有似乎給這個錯誤
varchar數據類型到datetime數據類型的轉化在外的範圍內的值導致
請幫助。在SQL Server
下面是使用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
,month
和year
之間插入-
,請使用STUFF
函數。插入後,我們可以將其轉換爲datetime
一種方法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()
不支持的。
這與SQL Server本機可解析的任何格式都不匹配。
因此,我的建議是:
使用字符串操作(LEFT
和SUBSTRING
)將其轉換成一個格式是原生SQL服務器解析的,例如,YYYY-MM-DD HH:MM:SS
(樣式120 ,「ODBC canonical」),
然後使用CONVERT
將其轉換爲日期時間。
這似乎工作。你能解釋一下嗎?試圖學習!而且,它引入了我不需要的毫秒部分..?如何刪除? –
閱讀有關將字符串放入另一個字符串的'stuff'功能。閱讀關於'datetime'的第二部分評論。一切都記錄在案。 –
@Rohinibaskaran - 增加了解釋..不要擔心毫秒,因爲它不存在您當前的格式。它將始終爲零。 –