两台server:
1.HP-UNIX+sybase 11.9
2.WIN2K+MS SQL 2K想要比较两台服务器的时间,我有如下代码,但有问题,请高手指点!
procedure FormMain.compare_twosystemtime;
var
  datetime_hp,datetime_nt:TDateTime;
begin
  datetime_hp:=now();
  datetime_nt:=now();  with Queryhp do
  begin
    if active then close;
    sql.Clear;
    sql.add(' select  getdate() ');
    open;
    datetime_hp:=Fields[0].AsDateTime;
  end;  with Querynt do
  begin
    if active then close;
    sql.Clear;
    sql.add(' select  getdate() ');
    open;
    datetime_nt:=Fields[0].AsDateTime;
  end;  if  abs(datetime_hp - datetime_nt)>300 then  //差5分钟以上提示
  begin
    showmessage(‘.....’);
  end;end;

解决方案 »

  1.   

    showmessage('......');
    Delphi的程序没有问题,Sybase支持getdate()这个函数吗?
      

  2.   

    这行代码的意思是:想在两个服务器时间差5分钟以上时做提示,但实际上时间相差几个小时时,datetime_hp - datetime_nt都不会大于300,请问原因在哪里?
    if  abs(datetime_hp - datetime_nt)>300 then  //差5分钟以上提示
      

  3.   

    datetime_hp - datetime_nt的结果并不是相差的秒数。
    其结果的整数部分是从12/30/1899到现在的天数,小数部分是对应当天的小时数,如0.5表示中午12点。你要比较的话,条件设为:
    abs(datetime_hp - datetime_nt)>5.0/24*60