2014-06-23 129 views
2

我正在修改數據庫,所有的datetime都以varchar格式存儲,如下所示:DDMonYY hhmm(例如13Mar99 2032)。在sql server中將不規則的varchar轉換爲datetime

我對SQL沒有太多的經驗,因爲我只是完成了大學第一年的學習,所以我很難試着讓這個工作,所以任何幫助,將不勝感激。

+0

看看[這裏](http://msdn.microsoft.com/en-us/庫/ ms187819.aspx)有幫助。 – user2989408

回答

2

您需要爲特定字符串執行的操作是在小時和分鐘值之間獲取冒號。喜歡的東西:

SELECT CAST(STUFF('13Mar99 2032', LEN('13Mar99 2032') - 1, 0, ':') AS datetime)

應該工作。

+0

+1不錯,不知道SQL Server會接受'13Mar99'作爲有效日期 – Andomar

+0

完美的工作,謝謝大家。 – PapaBeaver

1

您可以選取一個datetime format,然後移動部分字符串以匹配它。例如,格式7:

select convert(varchar(25), getdate(), 7) 
--> 
'Jun 23, 14' 

所以,你可以使用substring改變你的字符串:

declare @orig varchar(30) = '13Mar99 2032' 
declare @conv varchar(30) 

select @conv = substring(@orig, 3, 3) + ' ' + substring(@orig, 1, 2) + ', ' + 
    substring(@orig, 6, 2) + ' ' + substring(@orig, 9, 2) + ':' + substring(@orig, 11, 2) 

select @conv 
,  convert(datetime, @conv, 7) 
--> 
'Mar 13, 99 20:32'   1999-03-13 20:32:00.000 
相關問題