2017-08-12 94 views

回答

2

如果是2012+,可以使用Try_Convert()。对于任何转换失败,这将返回NULL,而不是抛出错误。

Declare @YourTable Table ([SomeCol] varchar(50)) 
Insert Into @YourTable Values 
('Oct 25, 2004') 
,('May 02, 2006') 
,('Nov 19, 2002') 
,('Not a Date Format') 

Select * 
     ,AsDate = try_convert(date,SomeCol) 
from @YourTable 

返回

SomeCol    AsDate 
Oct 25, 2004  2004-10-25 
May 02, 2006  2006-05-02 
Nov 19, 2002  2002-11-19 
Not a Date Format NULL   -- << Notice Returned NULL 
+0

如果default不是'EN'会怎么样?另外'TRY_CONVERT'可用于SQL Server 2012及更高版本。 – lad2025

+1

说'try_convert'不是一个公认的内置函数名称。尽管SSMS将其作为关键字进行了突出显示 – user3953989

+0

我的服务器是2012年,但看起来像数据库兼容级别设置为2008,更改了它,并且它工作了 – user3953989