将"Mar 5 2015 4:39PM"转换为"2015-03-05 16:39:00",SQL Server没有特定的函数来处理,所以用自定义函数来处理。
create function Func_ConvertToDateStr(@str varchar(50)) returns varchar(50) as begin --定义表变量,月份中英文对照 declare @tbl table ( EnMonth varchar(20), Mon varchar(2) ) insert @tbl select 'January','01' union select 'February','02' union select 'March','03' union select 'April','04' union select 'May','05' union select 'June','06' union select 'July','07' union select 'August','08' union select 'September','09' union select 'October','10' union select 'November','11' union select 'December','12' --Mar 25 2015 4:39PM declare @dateStr varchar(50) select @dateStr=SUBSTRING(@str,8,4)+'-'+a.Mon+'-'+right('00'+ltrim(SUBSTRING(@str,5,2)),2) +' '+case when right(@str,2)='PM' then CONVERT(varchar(2),12+SUBSTRING(@str,14,1)) else right('00'+LTRIM(SUBSTRING(@str,13,2)),2) end +':'+SUBSTRING(@str,16,2)+':00' from @tbl as a where left(a.EnMonth,3)=left(@str,3) return @dateStr end