1

時間保存爲varchar(8)格式,例如:09241324,我想將其轉換爲時間格式。我可以擺脫最後nn所以hh:mm:ss會工作。我嘗試使用投/轉換,但它是拋出錯誤:SQL-將varchar(8)轉換爲時間格式

Conversion failed when converting date and/or time from character string.

任何人都可以請幫助我嗎?

+1

什麼是你的RDBMS?時間/日期功能在實現中有所不同。 –

+0

這是sql server 2008 R2 –

+0

如果可能,應該更改表的數據類型並將時間信息存儲在time數據類型中。以字符形式存儲這些東西是一場噩夢。 –

回答

1

插入時間格式化件(冒號:和小數),和CAST爲TIME:

DECLARE @string VARCHAR(10) 
SET @string = '09241324' 
SELECT CAST(
    SUBSTRING(@string,1,2) + ':' + 
    SUBSTRING(@string,3,2) + ':' + 
    SUBSTRING(@string,5,2) + '.' + 
    SUBSTRING(@string,7,2) AS TIME) 
3

將這項工作?

convert(time, stuff(stuff(stuff(dt, 3, 0, ':'), 6, 0, ':'), 9, 0, '.')) 

cast通常優於convert但是從我的頭頂,我不知道你是否會需要到指定格式的代碼。

沒有毫秒是相似的:

convert(time, stuff(stuff(stuff(dt, 3, 0, ':'), 6, 0, ':'), 9, 2, '.00')) 
+0

你的東西比我的SUBSTRING更乾淨 – Matt

+0

我總是不得不查看'stuff'上的參數:) – shawnt00

+0

謝謝!它的工作原理,但我只是想第一個6位數字像hh:mm:ss而不是納秒。無論如何刪除這些? –