为什么ISDATE(YEAR(GETDATE()))、ISDATE(2020)、ISDATE(<any four digit number>)或ISDATE(<any expression that returns有了所有这些返回1,我们真的可以依靠ISDATE()来知道表达式是否是日期表达式吗?SELECT ISDATE(4000-2000)返回一个1,虽然它不是日期表达式。
为了避免任何转换错误,我们希望验证目标字符串是否可以使用isdate公式转换为datetime,如下所示。CASE WHEN isdate(@targetstring)= 1 then cast(@targetstring as datetime) else '1900-01-01 00:00:00' endselect isdate('2021-06-22 23:27:00')select isdat