ISDATE (Transact-SQL)

确定输入表达式是否为有效日期。

主题链接图标Transact-SQL 语法约定

语法

ISDATE ( expression )

参数

  • expression
    要验证其是否为日期的表达式expressiontextntext 表达式和 image 表达式以外的任意表达式,可以隐式转换为 nvarchar

    ms187347.note(zh-cn,SQL.90).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)

帮助和信息

获取 SQL Server 2005 帮助