在我的数据库中有一个表“日志”,只有1个字段“时间”,类型smalldatetime
我在VC中用下面的语句向这个表中写入数据:
wchar_t ti[32] = _T("2010-8-1");
SQLINTEGER time_size = SQL_NTS;
sRet = SQLBindParameter(hStmt,1,SQL_PARAM_INPUT,SQL_C_WCHAR,SQL_TIMESTAMP,4,0,ti,sizeof(ti),&time_size);
sRet = SQLPrepare(hStmt,TEXT("insert into 日志 values (?)"),SQL_NTS);
sRet = SQLExecute(hStmt);
但是SQLExecute这句会失败,用SQLGetDiagRec获取到的错误是:造型说明无效的字符值。
找资料也找不到,弄了半天了,实在弄不懂到底是哪里出错了,还请高手指教!

解决方案 »

  1.   

    SELECT 
         CAST('2007-05-08 12:35:29'     AS smalldatetime)
        ,CAST('2007-05-08 12:35:30'     AS smalldatetime)
        ,CAST('2007-05-08 12:59:59.998' AS smalldatetime);
     Input  Output  
    2007-05-08 12:35:29 
     2007-05-08 12:35:00
     
    2007-05-08 12:35:30 
     2007-05-08 12:36:00
     
    2007-05-08 12:59:59.998
     2007-05-08 13:00:00
     
      

  2.   


    数据类型                 范围                                                精确度  
    datetime     1753 年 1 月 1 日到 9999 年 12 月 31 日                   3.33 毫秒
     
    smalldatetime  1900 年 1 月 1 日到 2079 年 6 月 6 日                   1 分钟
     
    select cast(getdate() as smalldatetime)
      

  3.   

    原来可以把某一列的默认值设为getdate(),这样插入数据就会自动填写当前时间了,(~ o ~)~zZ
    还是要谢谢二位~~