放到查询分析器  点击执行 出现一下错误。
服务器: 消息 241,级别 16,状态 1,行 1
从字符串转换为 datetime 时发生语法错误。

解决方案 »

  1.   

    ISDATE
    确定输入表达式是否为有效的日期。语法
    ISDATE ( expression ) 参数
    expression一个表达式,将要验证它是否为一个日期。expression 是任何返回 varchar 数据类型的表达式。 返回类型
    int注释
    如果输入表达式是有效的日期,那么 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                   
      

  2.   

    按上述方法判断你的字符串类型的时间是否合法?可以加上条件isdate(时间字段) = 1将不合法的时间去掉.
      

  3.   

    就是说你先查查你的字段里面的时间(字符串类型)是否都是合法(正确)的.例如:
    表tb
    字段dt
    内容
    2008-12-29 --合法
    2008-12-30 --合法
    2008-12-31 --合法
    2008-12-32 --不合法
    2008-12-33 --不合法用isdate(dt) = 1 或 isdate(dt) = 0判断一下.
      

  4.   

    try:
    BeginDate1 = Trim(BeginDate1) & " 00:00"
    EndDate1 = Trim(EndDate1) & " 00:00" 
    另外,convert(varchar,update_time)
    这里,你的update_time是什么字段类型,如果是datetime,改成 convert(varchar(10),update_time,120)
    如果你的update_time 是字串类型,并且格式如: 2008-1-1 或 2008-01-01 这样的值,
    那么语句直接改为If BeginDate1 <> ""  And EndDate1 <> "" Then
    SQL = SQL & " and ( " & _
    " DATEADD(dd,0,'" & BeginDate1 & "') <= update_time " & _
    " And DATEADD(dd,0,'" & EndDate1 & "') >= update_time ) " & _
    " Or ( " & _
    " DATEADD(dd,0,'" & EndDate1 & "') < '" & BeginDate1 & "' " & _
    " And update_time> DATEADD(dd,0,'" & BeginDate1 & "') )" & _
    " Or ( " & _
    " DATEADD(dd,0,'" & EndDate1 & "') < '" & BeginDate1 & "' " & _
    " And update_time < DATEADD(dd,0,'" & EndDate1 & "') )"
    End If