用的是Delphi7,数据库字段myDate的数据类型是DateTime类型,ADOQuery,ADoConnection都是默认设置连接
1. ADOQuery1.SQL.Text :='insert into Table1 ( myDate) Values (:aDateTime)';
2. ADOQuery1.Parameters.ParamByName('aDateTime').Value :=now;
3. ADOQuery1.Parameters.ParamByName('aDateTime').DataType :=ftDateTime;
4. ADOQyery1.ExecSql;
执行结果,我希望得到的结果如下:2010-12-7 15:20:17 ,但实际上的结果是2010-12-7,只有前面日期部分,而没有后面的时间部分.我在Access数据库和Oracle的数据库上都是这样.
关键是,以前的结果是正确的,现在不知为啥,就变成这样了.
以前也出现过这种问题,我是加了第3行,指定参数类型解决了的,现在,即使指定,也不行.
如何能得到我想要的那个结果?注:
 1.请注意一个大前提,我的字段类型是DateTime的,如果建议用字符型的来保存的话,就不用说了,跟我这个问题不相关.
 2.可以就以Access数据库为准做说明,好方便测试

解决方案 »

  1.   

    那就用字符吧,formatdatetime('yyyy-MM-dd hh:mm:ss',now),拼SQL语句执行.
      

  2.   


    多谢老大回复. 
    但你的回复,对我一点用也没有.我在注中已经说了,用字符保存的话,就不要说了.
    希望大家能直接回答帮我解决问题,而不是采用其它折中的方式.
    如果大家都采用折中的方式,那么这个问题也就永远没答案了啊.我发现论坛里,太多的答非所问了.
    如果我问的是怎样解决保存日期的问题,给我推荐用字符方式保存,当然可以很好的解决这个问题.但我的问题是ADOQuery的传递那个日期参数,为啥结果不对,怎样处理可以得到正确结果
      

  3.   


    对不起啊,刚想起来一个,并且测试了下, 嗯,是我之前没说清楚.
    现在情况是这样:
    我用ADO直接连接,就没问题了,可以保存完整的时间.
    之前出现这个问题时,都是用的ODBC连接(虽然很少用).
    那么现在就可以确认了,是使用ODBC造成的,那么,在使用ODBC的情况下,有无方法解决?
    在ODBC管理器中看不到微软的ODBC驱动和版本
      

  4.   

    如果你要连接access的话,使用ADO是没有问题的。
    ODBC还要看你配置的版本,你能够看到odbc中有很多与access相关的驱动。
    所以保险起见,你还是使用ADO比较好些。
      

  5.   

    把第3句移到第2句前面去,看一看
       再看看你query里面的字段,参数的类型是否默认为别的,这可能是你修改了参数类型导致的,清楚字段,重新添加即可