为什么日期变成1899-12-30?

abinnet 2002-11-21 11:50:01
为什么日期字段为空的记录,用Table1.FieldByName('kprq').AsDatetime;取出以后都变成了“1899-12-30”这是什么原因(DBF表)。
...全文
5210 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
blazingfire 2002-12-23
  • 打赏
  • 举报
回复
日期为0时其转化为时间就是那样
NULL值不一样的!!
stevenpeng 2002-12-23
  • 打赏
  • 举报
回复
日期为数字
anh 2002-12-23
  • 打赏
  • 举报
回复
Delphi_Li(Delphi Li) 说的对,
是因为你数据中这个值为空据以在显示的时候为1899-12-30这个你可以测一个的。
你把显示成这个日期的那个值找开修改一下或是你把表中的一个日期清空后再显示到一个dtp中不就明白了吗?
wxlm 2002-12-22
  • 打赏
  • 举报
回复
Delphi中保存目期用的是FLOAT型,并以1899-12-30这一天为基数,每大于一天就加1小于一天就减1.所以你在计算两个日期之间的天数时就很容易了
比如:date-strtodate('2000.01.01')
当字段的内容为空时,系统会认为是零,也就是1899-12-30了
atyzy 2002-12-22
  • 打赏
  • 举报
回复
我也出现过这种情况,原因是:看看对你有没有帮助.
在dbf表里,字段用的十日期格式即"D"
在程序里,我将time()写到了该字段,
另外,也可能是没写上数据.
Dhammacakkhu 2002-11-22
  • 打赏
  • 举报
回复
好像日期字段为空时都是这个值,access也是
lhhcn 2002-11-22
  • 打赏
  • 举报
回复
是不是系统默认日期?

UP
键行天下 2002-11-22
  • 打赏
  • 举报
回复
一种原因是你的日期为空
另一个原因是你的日期没有激活

建议用DBDATETIMEEDITEH
flysunny 2002-11-22
  • 打赏
  • 举报
回复
0就是1899-12-30,你可以让你的日期时间字段为null呀。
Delphi_Li 2002-11-22
  • 打赏
  • 举报
回复
如果你得日期字段的值是空,那么系统会自动转化为数字0,这正好是1899-12-30,你应该增加一个断语句,判断字段内容是否为空!!!
neilwq 2002-11-22
  • 打赏
  • 举报
回复
日期实际上是一个数字类型,以1899-12-30:00:00为基数,大于这个日期就加一个数字,1表示一天,秒用小数表示,小于这个日期就用负数表示
boynicky 2002-11-22
  • 打赏
  • 举报
回复
所有的系统默认时间都是1899-12-30日,

如果要去当前的时间应该是table.fieldbyname('a').asstring:=datetostr(now);

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧