确定输入表达式是否为有效日期。
语法
ISDATE ( expression )
参数
- expression 
 要验证其是否为日期的表达式。expression 是 text、ntext 表达式和 image 表达式以外的任意表达式,可以隐式转换为 nvarchar。.gif) 注意: 注意:- 如果 expression 的类型为 varchar,则值会转换为 nvarchar(4000)。如果传递将导致截断的较大值,则 SQL Server 2005 将生成错误。 
返回类型
int
备注
只有与 CONVERT 函数一起使用,同时指定了 CONVERT 样式参数并且样式不等于 0、100、9 或 109 时,ISDATE 才是确定性函数。
ISDATE 的返回值可能会受到 LANGUAGE 和 DATEFORMAT 设置的影响。
有关 ISDATE 将对其返回 1 的日期样式示例,请参阅 CAST 和 CONVERT 中“参数”部分的“输入/输出”列。
如果输入表达式是有效日期,那么 ISDATE 返回 1;否则,返回 0。下表显示一组示例的返回值。
| 列值 (varchar) | ISDATE 返回值 | 
|---|---|
| NULL | 0 | 
| Abc | 0 | 
| 100、-100、100 a 或 100.00 | 0 | 
| .01 | 0 | 
| -100.1234e-123 | 0 | 
| .231e90 | 0 | 
| $100.12345、- $100.12345 或 $-1000.123 | 0 | 
| as100 或 1a00 | 0 | 
| 1995-10-1、1/20/95、1995-10-1 12:00pm、Feb 7 1995 11:00pm、1995-10-1 或 1/23/95 | 1 | 
| 13/43/3425 或 1995-10-1a | 0 | 
| $1000、$100 或 $100 a | 0 | 
示例
A. 使用 ISDATE 检查变量
以下示例检查 @datestring 局部变量是否为有效的日期数据。
DECLARE @datestring varchar(8)
SET @datestring = '12/21/98'
SELECT ISDATE(@datestring)
下面是结果集:
----------- 
1           
B. 使用 ISDATE 检查列是否为日期类型
以下示例将创建 test_dates 表并插入两个值。示例中将使用 ISDATE 来确定列中的值是否为日期。
USE tempdb
CREATE TABLE test_dates (Col_1 varchar(15), Col_2 datetime)
GO
INSERT INTO test_dates VALUES ('abc', 'July 13, 1998')
GO
SELECT ISDATE(Col_1) AS Col_1, ISDATE(Col_2) AS Col_2 
   FROM test_dates
下面是结果集:
Col_1                     Col_2               
-----------------         --------------------
0                         1                   
请参阅
参考
SET DATEFORMAT (Transact-SQL)
SET LANGUAGE (Transact-SQL)
char 和 varchar (Transact-SQL)
系统函数 (Transact-SQL)
.gif)