在Select语句中的CONVERT上尝试捕获

Joh*_*dol 18 sql t-sql datetime try-catch

是否可以在SQL选择中使用TRY CATCH块?

对于类似的东西,例如:

select 
   order, 
   CONVERT(DATETIME, orderDate)
from orders
Run Code Online (Sandbox Code Playgroud)

处理这种情况的最佳方法是什么?

Rob*_*Day 22

我不知道try-catch,但在SQL Server中你有ISDATE函数,可以在那里做类似的事情

CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DateTime, orderDate) ELSE GETDATE() END
Run Code Online (Sandbox Code Playgroud)

  • 如果日期格式不同怎么办? (6认同)

小智 12

在MS SQL Server 2012中,有一个新的构造可以完全满足要求:


SELECT 
    CASE WHEN TRY_CONVERT(float, 'test') IS NULL 
    THEN 'Cast failed'
    ELSE 'Cast succeeded'
END AS Result;
    GO
Run Code Online (Sandbox Code Playgroud)

另请参见http://msdn.microsoft.com/en-us/library/hh230993.aspx

  • 真的很好xD,但这只适用于sql 2012,对吧? (2认同)