日期:2014-05-17  浏览次数:20733 次

sql 里怎么把varchar转成datetime格式
我的表格里有一列数据是15-3-2011 0:00:00类似的数据,类型是varchar(50)的,现在我要把这个跟2011-01-01比较,应该怎么转格式?
------解决方案--------------------

if OBJECT_ID('f_ToDate') is not null
drop function f_ToDate
go
create function f_ToDate
(
@Date varchar(50)
)
returns datetime
as
begin
--declare @Date varchar(50)='15-3-2011 0:00:00'
declare @day varchar(2)
declare @month varchar(2)
declare @year varchar(4)
select @day=left(@Date,CHARINDEX('-',@Date)-1)
--print @day
select @month=substring(@Date,CHARINDEX('-',@Date)+1,charindex('-',@Date,CHARINDEX('-',@Date)+1)-CHARINDEX('-',@Date)-1)
--print @month
select @year=right(replace(@Date,' 0:00:00',''),4)
--print @year
return @year+'-'+@month+'-'+@day+right(@Date,8)
end
go

select dbo.f_ToDate('15-3-2011 0:00:00')
/*
2011-03-15 00:00:00.000
*/