郁闷,为什么在SQL SERVER 中定义为DataTime类型字段的表
在Delphi中更新记录时报错,说找不到记录,而表中明明有这条记录,后来我在SQL SERVER 中字段类型改成SmallDateTime 就行了,怎么会这样呢,是不是DELPHI 6存在BUG,哪位遇到类型问题,后来是怎解决的呀.
对了,是用三层架构的.

解决方案 »

  1.   

    你在Delphi中没有设置时间格式
      

  2.   

    to lionlsl(林)那应该在哪设置时间格式呢?
      

  3.   

    怎么会报错呢?报什么错?定义datetime的类型不会有问题的。
      

  4.   

    问题找到了,因为我那个字段定义了DEFAULT(GetDate()),那么在SQL中会产生当前的日期时间,且精确到毫秒级如(2004.07.15 08:10:45.987), 而在DELPHI中用ADO组件取数据时,只取到秒为止.即(2004.07.15 08:10:45),所以更新时当然就找不到原记录了.
      

  5.   

    原因很简单:Delphi的TDateTime表示的日期时间范围与SQL 的datetiem的有效范围不一致,缺省操作时容易出现这样的问题。
      

  6.   

    //设置日期格式
      if datetostr(date) <> formatdatetime('yyyy-MM-dd', date) then
        if SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE,
          PChar('yyyy-MM-dd')) then
          SendMessageA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);