大家好,我在ADOQuery的SQL属性中写上:
'INSERT INTO Operator(oper_date) values' + '(2008-8-8)';} 插入的结果竟然变成1905-6-14,
而改成'INSERT INTO Operator(oper_date) values' + '( ''' + '2008-8-8' + ''')'; 插入的结果与预期一致。但是当我看到'DELETE FROM dtsztable WHERE oper_date < #' + FormatDateTime('yyyy-mm-dd', Now) + '#'也能成功插入正确的数据时,感到疑惑。究竟采用哪一种方法更好能?谢谢!在线恭候。

解决方案 »

  1.   

    你那个delete的是用于access数据库的,前面insert的用于sql server数据库
      

  2.   

    在以上三种中用这种FormatDateTime('yyyy-mm-dd', Now)我比较倾向。
    但最好用:用参数传递的方式来处理,避免引号等问题
      

  3.   

    请问在access和sql server操作日期数据类型有什么不同
      

  4.   

    access: 
    '#2008-08-26#'sql server:
    '2008-08-26'
      

  5.   

    请问在sql server中采用以下这种形式,把日期看作是字符串类型吗?
    'INSERT INTO Operator(oper_date) values' + '( ''' + '2008-8-8' + ''')';
    谢谢!
      

  6.   

    'INSERT INTO Operator(oper_date) values' + '(2008-8-8)';} 插入的结果竟然变成1905-6-14,但是日期型数据不是字符串型数据,为什么会出现这种情况呢?谢谢!
      

  7.   

    'INSERT INTO Operator(oper_date) values' + '(2008-8-8)'
    这个到了sql中的计算就是  2008-8-8=1992变成了float插入日期型了
    'INSERT INTO Operator(oper_date) values' + '( ''' + '2008-8-8' + ''')'; 
    这个好像在sql中还真就没考究过,只是就这么用着了,不过实际存储的却是浮点罢了。
      

  8.   

    小子狼,您好。感谢你的回答。'INSERT INTO Operator(oper_date) values' + '(2008-8-8)';} 插入的结果变成1905-6-14而不是1992,请问是什么原因呢?
      

  9.   

    你把1905-6-14这个值,通过asfloat读出来看一下就明白了。