在SQL Server 2005中验证DateTime字符串

Mag*_*ndi 0 sql sql-server validation datetime sql-server-2005

我需要一个SQL脚本来验证SQL Server 2005数据库中的表中的VARCHAR字段,该数据库包含DateTime值,格式DD/MM/YYYYNULL值.我想确定所有无效日期.谁能建议一种方法?

UPDATE

  • 答案必须使用T-SQL; 出于性能原因,我无法使用SQLCLR.

谢谢,MagicAndi

gbn*_*gbn 8

使用"ISDATE()"或"IS NULL":但首先设置语言以识别日 - 月 - 年订单

SET LANGUAGE british
SELECT ISDATE('12/31/2009'), ISDATE('31/12/2009')

SET LANGUAGE us_english
SELECT ISDATE('12/31/2009'), ISDATE('31/12/2009')
Run Code Online (Sandbox Code Playgroud)

编辑:正如@edosoft所提到的,你也可以使用SET DATEFORMAT.SET LANGUAGE隐式设置DATEFORMAT,SET DATEFORMAT覆盖SET LANGUAGE


edo*_*oft 5

使用ISDATE()时应指定dateformat.来自联机丛书:

SET LANGUAGE us_english;
SET DATEFORMAT dmy;
SELECT ISDATE('15/04/2008'); --Returns 1.
Run Code Online (Sandbox Code Playgroud)