以sql2012以前的版本,我们使用CONVERT尝试把某一个值转为某一个数据类型值时,当转换失败时,它会抛出异常。就以这篇为例,http://www.cnblogs.com/insus/archive/2012/08/11/2634131.html
DECLARE @d NVARCHAR(20) = N'2012年08月12日14时36分48秒'
SELECT CONVERT(DATETIME,@d)
SELECT CONVERT(DATETIME,@d)
它会抛出如下异常消息:
Msg 241, Level 16, State 1, Line 2
Conversion failed when converting date and/or time from character string.
如今在SQL Server 2012可以使用TRY_CONVERT函数,可转失败时,它获取一个NULL值。
DECLARE @d NVARCHAR(20) = N'2012年08月12日14时36分48秒'
SELECT TRY_CONVERT (datetime,@d)
SELECT TRY_CONVERT (datetime,@d)
执行结果: