很多人没有想到的,系统时间与数据库时间的问题,急急急急急急急急(100分)

M

mtj

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL SERVER 7 中(SMALLDATETIME) 0代表1900-1-1 ,而在DELPHI 中0 代表1899-12-30
请问怎么使两个时间一致,
 
用 FieldByTime().AsString, 用字符串统一起来!!
 
都用字符串处理把
 
主要是要在数据库中查询某段时间的数据

有没有象改变DELPHI全局变量的方法
 
那个不是全局变量,已经数据Delphi的一部分了。
不过我很奇怪,真的,你为什么对这个关心呢?
数据库中没有填写和0是完全不一样的。程序中没有输入时间和1899也是完全不一样的呀。
就是说这个通过程序完全可以解决,完全没有必要个人认为也不应该用这两个极限数值呀。
 
呵,这个难吗?
你究竟想实现什么功能,
query1.sql.text :='select * from a where date >:begindate and date<:enddate';
query1.parambyname('begindate').asdatetime := now;
query1.parambyname('enddate').asdatetime := now+10;
 
你想想如果是某天呢?
我用 SELECT * FROM TABLE1 WHERE CAST(MYDATE AS INT)<=:BEGIN AND CAST(MYDATE AS INT)>=:END

ADOquery1.PARAMETERS.parambyname('BEGIN').VALUE := INT(NOW);
ADOquery1.PARAMETERS.parambyname('END').VALUE := INT(NOW);

我是想有没有比较彻底的解决办法




 
这不是你的错,用不着看重它,如果它很重要,就在数据表中指定一个默认的有效时间好了
 
想好了
SELECT * FROM TABLE1 WHERE MYDATE <=:BEGIN AND MYDATE >=:END

ADOquery1.PARAMETERS.parambyname('BEGIN').VALUE := BeginOfTheDay(NOW);
ADOquery1.PARAMETERS.parambyname('END').VALUE := EndOfTheDay(NOW);

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
987
SUNSTONE的Delphi笔记
S
S
回复
0
查看
805
SUNSTONE的Delphi笔记
S
顶部