为什么日期字段为空的记录,用Table1.FieldByName('kprq').AsDatetime;取出以后都变成了“1899-12-30”这是什么原因(DBF表)。

解决方案 »

  1.   

    好像日期字段为空时都是这个值,access也是
      

  2.   

    所有的系统默认时间都是1899-12-30日,如果要去当前的时间应该是table.fieldbyname('a').asstring:=datetostr(now);
      

  3.   

    0就是1899-12-30,你可以让你的日期时间字段为null呀。
      

  4.   

    一种原因是你的日期为空
    另一个原因是你的日期没有激活建议用DBDATETIMEEDITEH
      

  5.   

    我也出现过这种情况,原因是:看看对你有没有帮助.
    在dbf表里,字段用的十日期格式即"D"
    在程序里,我将time()写到了该字段,
    另外,也可能是没写上数据.
      

  6.   

    Delphi中保存目期用的是FLOAT型,并以1899-12-30这一天为基数,每大于一天就加1小于一天就减1.所以你在计算两个日期之间的天数时就很容易了
    比如:date-strtodate('2000.01.01')
    当字段的内容为空时,系统会认为是零,也就是1899-12-30了
      

  7.   

    Delphi_Li(Delphi Li) 说的对,
    是因为你数据中这个值为空据以在显示的时候为1899-12-30这个你可以测一个的。
    你把显示成这个日期的那个值找开修改一下或是你把表中的一个日期清空后再显示到一个dtp中不就明白了吗?
      

  8.   

    日期为0时其转化为时间就是那样
    NULL值不一样的!!