2015-12-14 38 views
0

我有一個table存儲開始時間和結束時間。將字符串轉換爲sql server中的smalldatetime數據類型時轉換失敗(不包括靜態值)

我得到轉換字符串時爲smalldatetime 數據類型

轉換失敗。

使用table選擇以下查詢時出錯。

select CAST(substring(CONVERT(varchar,convert(smalldatetime,o.StartTime),114), 1,2) as int) 
from TimeTable O 

在分析中,我發現了一些記錄與開始時間爲'9:30 PM'導致錯誤。 (其他記錄有'09:30 PM'作爲開始時間)。我排除了'9:30 PM'記錄並且查詢成功執行。

這裏的問題是,

如果我明確指定如下select語句中的值,

SELECT CAST(substring(CONVERT(varchar,convert('9:30 PM',o.StartTime),114), 1,2) as int) 

我沒有得到任何錯誤。

但是,當我從table中選擇出現錯誤。有人能幫忙嗎?

回答

2

要實際尋找什麼輸出?

如果你想要一個像「9:30 PM」或'09值:30 PM」被轉換爲時間格式,你可以用下面的一個

SELECT CAST(CONVERT(VARCHAR(8), '9:30 PM', 108)AS TIME) 
SELECT CAST(CONVERT(VARCHAR(8), '09:30 PM', 108)AS TIME) 

否則繼續前進,如果你想它存儲在datetime或smalldatetime

那麼這會爲你

SELECT CAST(CONVERT(VARCHAR(8), '9:30 PM', 108)AS DATETIME) 
SELECT CAST(CONVERT(VARCHAR(8), '09:30 PM', 108)AS DATETIME) 
工作
相關問題