关于时间型转换的问题的简单问题

littlehero 2002-05-11 04:23:24
我用了aql server 建的数据库,但是程序确是在delphi的bde下开发的,于是出现了许多时间上的问题,比如:我选用了一个datetime型的变量,但是在使用时却出现了这样一个现象,它的标记为1899年12月31日,这是怎么回事,怎么解决?
...全文
14 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
joyhero 2002-05-12
  • 打赏
  • 举报
回复
可以在TDateTimeField类型字段的OnGetText事件中加入以下代码:
if (Sender as TField).IsNull then
Text := ''
else
Text := FormatDateTime('yyyy-mm-dd', (Sender as TField).AsDateTime);
zhang21cnboy 2002-05-12
  • 打赏
  • 举报
回复
呵,数据库的字段里面的值是你自己插入的吗?

如果是你自己插入的数据的话,那就是插入的数据本来就没有满足你要求,如果你插入的仅仅是时间,那么绝对不会显示日期的!

如果你的哪个字段的值是从sql server的机器里面自动取的,建议你取 time

而不是date或者是now!
renzhm 2002-05-11
  • 打赏
  • 举报
回复
问题分析:

1、这个字段datetime你没设非空
2、你向这个字段插入了空格,或非可视字符。

以上的结果会产生默认值

提示:datetime实际是浮点类型数据。

blazingfire 2002-05-11
  • 打赏
  • 举报
回复
用字符串变量作字段好一些吧!
yjs_lh 2002-05-11
  • 打赏
  • 举报
回复
时间型数据为NULL时,表现出来则为1899年12月31日.
可以将时间型数据转化为字符。
select convert(char(10),时间字段,120) from 表名
littlehero 2002-05-11
  • 打赏
  • 举报
回复
补充一下,我本来的目的是使用这个变量作为时间来处理,但是sql下的datetime却是连时间和日期在一起的.怎么样让我能把这个变量只操作
它的时间部分,比如在显示时不显示那个1899-12-30?
webnumen 2002-05-11
  • 打赏
  • 举报
回复
这是他的默认日期!你具体赋值进去就可以了!

5,388

社区成员

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

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