语句如下
SET @SQL_INSERTURI = ''
SET @SQL_INSERTURI = @SQL_INSERTURI +
'INSERT INTO  M_BCMEISAI_URI ( KEIJ_NEN  , KEIJ_KI  , WEEK_YMD , FIX_KBN ...... ) VALUES (''' +
@KEIJ_NEN + ''','''+ @KEIJ_KI + ''',''' +  Cast( @INS_WEEK_YMD As Varchar) + ''',''' + CAST(@FIX_KBN As Varchar) + ''',''' .........
+ ''')' 
PRINT @SQL_INSERTURI
EXEC(@SQL_INSERTURI)字段类型如下:
@INS_WEEK_YMD    DATETIME
FIX_KBN                 DECIMAL(15,3)这两个字段我是用 CAST(**** As Varchar) 处理的。可不可以?
对于那个时间类型,我插入Cast( @INS_WEEK_YMD As Varchar)的值是2007-03-14 20:29:00.000但是不用这种类型转换,直接插入@INS_WEEK_YMD的值是2007-03-14 20:29:36.890我想插入的是2007-03-14 20:29:36.890 应该怎么处理?

解决方案 »

  1.   

    Cast( @INS_WEEK_YMD As Varchar)  
    改用
    Convert(Varchar, @INS_WEEK_YMD , 121)
      

  2.   

    Declare @INS_WEEK_YMD DateTIme
    Select @INS_WEEK_YMD = '2007-03-14 20:29:36.890'
    Select Convert(Varchar, @INS_WEEK_YMD , 121)
    --Result
    /*
    2007-03-14 20:29:36.890
    */
      

  3.   

    dawugui(潇洒老乌龟)好象沒看明白題意
      

  4.   

    不過,從你上面的語句看,可以不用使用動態語句的。可以直接INSERT INTO  M_BCMEISAI_URI ( KEIJ_NEN  , KEIJ_KI  , WEEK_YMD , FIX_KBN ...... ) 
    VALUES (@KEIJ_NEN , @KEIJ_KI ,@INS_WEEK_YMD, @FIX_KBN...)
      

  5.   


    declare @dt datetime
    set @dt='2007-03-14 20:29:36.890'
    select convert(varchar,@dt,121)
    select @dt
      

  6.   

    declare @date datetime set @date = '2007-03-14 20:29:36.890'
    select convert(varchar(8000),@date,121)
    /*
    2007-03-14 20:29:36.890(所影响的行数为 1 行)*/
      

  7.   

    谢谢各位了,
    问题解决了,
    TO paoluo(一天到晚游泳的鱼) 
    语句我没有写完,'INSERT INTO  M_BCMEISAI_URI ( KEIJ_NEN  , KEIJ_KI  , WEEK_YMD , FIX_KBN  ,'+ @MAX_TR_SU_COL +......后面对插入的列也有要求,所以@MAX_TR_SU_COL代表不同的列,条件不同@MAX_TR_SU_COL的值也不同,所以就只能用拼写字符串的方法了!
      

  8.   

    substring 函数 返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。string substring(string, number, number?)备注备注该字符串中的每个字符都被认为具有数字位置:第一个字符的位置是 1,第二个字符的位置是 2,依此类推。如果未指定第三个参数,将返回从第二个参数指定的位置开始直到字符串结尾的子字符串。如果参数不是字符串类型,将先使用 string() 函数转换为字符串,然后计算该转换的结果。
    警告作为参数传递给此函数的节点集的字符串转换可能会产生意外的结果。有关更多信息,请参见 string 函数。此函数区分大小写。
    示例示例以下函数调用返回“234”:substring("12345",2,3) 以下函数调用返回“2345”:substring("12345",2) 返回的子字符串包含如下字符:字符位置大于或等于第二个参数的舍入值,且如果指定了第三个参数,小于第二个和第三个参数的舍入值之和。上面使用的比较和加法遵循 IEEE 754 标准规则;如同调用 round() 函数一样进行舍入。下列示例阐释异常情况。substring("12345", 1.5, 2.6) 返回“234”substring("12345", 0, 3) 返回“12”substring("12345", 0 div 0, 3) 返回 ""substring("12345", 1, 0 div 0) 返回 ""substring("12345", -42, 1 div 0) 返回 "12345"substring("12345", -1 div 0, 1 div 0) 返回 ""该示例演示前一个 substring() 表达式。
    这个是C#的语法