SQL SERVER 有没有自带的函数可以判断一个字符串能否转换成smalldatetime 类型,如果没有哪位能知道写一个用户自定义的判断函数

解决方案 »

  1.   

    ISDATE
    确定输入表达式是否为有效的日期。语法
    ISDATE ( expression ) 参数
    expression一个表达式,将要验证它是否为一个日期。expression 是任何返回 varchar 数据类型的表达式。 返回类型
    int注释
    如果输入表达式是有效的日期,那么 ISDATE 返回 1;否则,返回 0。
      

  2.   

    示例
    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                   
      

  3.   

    ISDATE只能验证是否是日期格式,并不能判断如果是日期,能否转换成smalldatetime
    所以你只能通过自己写函数来判断.
      

  4.   

    Isdate()足矣。
    如果一个字符串是日期,则必然能转化为smalldatetime.只是转化的结果不一定是你想要的。
    例子:select Isdate('2008-08-08') -- return 1
    select Isdate('12:20') -- return 1select Cast('12:20' as smalldatetime)   return 1900-01-01 12:20:00