delphi与Sql 6.5 相连怎样获取服务器的 时间?急,急!!!(100分)

  • 主题发起人 主题发起人 杨文
  • 开始时间 开始时间

杨文

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi与Sql 6.5 相连怎样获取服务器的 时间?急,急!!!
 
var
Rq: TDateTime;
begin
with TQuery.Create (OWner) do
begin
DataBaseName :='YourSQLServer';
Sql.Text := 'SELECT GETDATE() RQ FROM DUAL';
Active := True;
Rq := FieldByName('RQ').AsDateTime; //服务器时间
Free;
end;

end;
 
Function GetServerDate:TDatetime;
var
Rq: TDateTime;
TmpQuery:TQuery;
begin
TmpQuery:=TQuery.Create(self);
with TmpQuery do
begin
DatabaseName := yourDatabase.DataBaseName;
Sql.Add('Select srq=Getdate()');
end;
Try
TmpQuery.Open;
result:=TmpQuery.FieldByName('srq').AsDateTime;
TmpQuery.Close;
TmpQuery.Free;
Except
TmpQuery.Free;
End;

end;
 
还有一种方法 就是在程序开始时用WINEXEC()执行
NET TIME [//computer | /WORKGROUP:wgname] [/SET] [/YES]
同步系统时间;
NET.EXE 在WINDOWS目录下!
 
可以用存储进程,最保险.
存储进程:
declare @curdate char(15) output
select
@curdate=str(datepart(year,getdate()),4,0)+str(datepart(month,getdate()),2,0)+str(datepart(day,getdate()),2,0)+''+str(datepart(hour,getdate()),2,0)+':'+str(datepart(minute,getdate()),2,0)
return 0

程序中定义一个TStoredProc,Tdatabase部件,StoredProc1的参数名为@curdate,类
型是output.配置database1的参数.
var
cudate:string;
begin
database1.connected:=True;
StoredProc1.DatabaseName:=Database.databasename;
Storedproc1.close;
Storedproc1.ExecProc;
cudate:=Storedproc1.ParamByName('@curdate').asstring;
Storedproc1.close;
end;
 
1. query :
query.sql.add('select rq=getdate()');
query.active := true;
query.fieldsbyName('rq').asdatetime; // that's it.
2.use storeproc:
create procedure
@rq smalldatetime OUTPUT
as
select rq=getdate()
go
然后在客户端用Tstoredproc调用即可。
 
SQL中关于时间的函数很多:
getdate() 从系统获取时间
datename 返回时间的日期部分
datepart 返回一给定日子的日期部分的整数值
dateadd 把日期部分的数值加入到日期中
datediff 返回两时间的相隔值

具体请参考SQL的书!
 
如果经常需要取得数据库时间,可以在数据库中建立一个只有一条记录的
表,例如onerecord.
然后用select getdate() dates from onerecord
就可以取得系统时间
而且不会增加网络负担
 
多人接受答案了。
 
后退
顶部