我正在修改數據庫,所有的datetime都以varchar格式存儲,如下所示:DDMonYY hhmm(例如13Mar99 2032)。在sql server中將不規則的varchar轉換爲datetime
我對SQL沒有太多的經驗,因爲我只是完成了大學第一年的學習,所以我很難試着讓這個工作,所以任何幫助,將不勝感激。
我正在修改數據庫,所有的datetime都以varchar格式存儲,如下所示:DDMonYY hhmm(例如13Mar99 2032)。在sql server中將不規則的varchar轉換爲datetime
我對SQL沒有太多的經驗,因爲我只是完成了大學第一年的學習,所以我很難試着讓這個工作,所以任何幫助,將不勝感激。
您需要爲特定字符串執行的操作是在小時和分鐘值之間獲取冒號。喜歡的東西:
SELECT CAST(STUFF('13Mar99 2032', LEN('13Mar99 2032') - 1, 0, ':') AS datetime)
應該工作。
+1不錯,不知道SQL Server會接受'13Mar99'作爲有效日期 – Andomar
完美的工作,謝謝大家。 – PapaBeaver
您可以選取一個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
看看[這裏](http://msdn.microsoft.com/en-us/庫/ ms187819.aspx)有幫助。 – user2989408