问题描述:系统中大部分功能中所使用的日期取自本机,因本机时间大都不一致,导致数据统计不准确。如何获取服务器上的当前日期时间

解决方案 »

  1.   

    Query1.SQL.Clear;
    Query1.SQL.Add('select getdate()')
    Query1.SQL.Open;
    Query1.Fields[0].AsDateTime
      

  2.   

    function GetServerDateTime: TDateTime;
    var
      ASQL: string;
    begin
      ASQL := 'SELECT GETDATE()';
      {写处你处理它的代码}
      result := ..AsDateTime;
    end;
      

  3.   

    对,sql server中就是‘select getdate()’
      

  4.   

    sql server中就有 getdate()这个涵数得到时间的
      

  5.   

    我做的:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    type
      PTime_Of_Day_Info = ^TTime_Of_Day_Info;
      TTime_Of_Day_Info = record
        tod_elapsedt  :Integer;
        tod_msecs     :Integer;
        tod_hours     :Integer;
        tod_mins      :Integer;
        tod_secs      :Integer;
        tod_hunds     :Integer;
        tod_timezone  :LongInt;
        tod_tinterval :Integer;
        tod_day       :Integer;
        tod_month     :Integer;
        tod_year      :Integer;
        tod_weekday   :Integer;
      end;
       function NetRemoteTOD(ServerName :PWideChar;var buffer :pointer) :Integer; stdcall; external 'netapi32.dll';
       function NetApiBufferFree(buffer : Pointer) :Integer; stdcall; external 'netapi32.dll';
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        FServerName :WideString;
        FElapseDt   :Integer;
        FMSecs      :Integer;
        FHours      :Integer;
        FMins       :Integer;
        FSecs       :Integer;
        FHunds      :Integer;
        FTInterval  :Integer;
        FTimeZone   :LongInt;
        FDay        :Integer;
        FMonth      :Integer;
        FYear       :Integer;
        FWeekDay    :Integer;
        function GetTOD(ServerName:WideString):Integer;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    function TForm1.GetTOD(ServerName: WideString): Integer;
    var Buffer     :pointer;
        Rek        :PTime_Of_Day_Info;
        ADate      :TDateTime;
        ATime      :TDateTime;
        FinalTime  :TDateTime;
        THours,
        TMins,
        TSecs,
        TMSecs     :Word;
        TYear,
        TMonth,
        TDay       :Word;
    begin
      result:=NetRemoteTOD(PWideChar(ServerName),
                           Buffer);
      if result=0 then
      begin
        Rek:=PTime_Of_Day_Info(Buffer);
        FServerName :=ServerName;
        FElapseDt   :=Rek.tod_elapsedt;
        FMSecs      :=Rek.tod_msecs;
        FHours      :=Rek.tod_hours;
        FMins       :=Rek.tod_mins;
        FSecs       :=Rek.tod_secs;
        FHunds      :=Rek.tod_hunds;
        FTInterval  :=Rek.tod_tinterval;    If Rek.tod_timezone <> -1 then
        begin
          FTimeZone:=Rek.tod_timezone div 60;
        end
        else
          FTimeZone:=0;    FDay        :=Rek.tod_day;
        FMonth      :=Rek.tod_month;
        FYear       :=Rek.tod_year;
        FWeekDay    :=Rek.tod_weekday;    ADate:=EncodeDate(FYear, FMonth, FDay);
        ATime:=EnCodeTime(FHours, FMins, FSecs, FHunds);    FinalTime:=StrToDateTime(DateTimeToStr(ADate) + ' ' + TimeToStr(ATime));
        FinalTime:=FinalTime - (FTimeZone / 24);    decodetime(FinalTime,THours, TMins,TSecs,TMSecs);    FHours:=Integer(THours);
        fmins:=integer(tmins);
        fsecs:=integer(tsecs);    decodeDate(FinalTime,TYear, TMonth,TDay);
        FYear:=Integer(TYear);
        FMonth:=Integer(TMonth);
        FDay:=Integer(TDay);
        Label1.Caption:=inttostr(fyear)+inttostr(fmonth)+inttostr(fday)+':'+inttostr(fhours)+':'+inttostr(fmins)+':'+inttostr(fsecs);
      end;
      NetApiBufferFree(Buffer);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        GetTOD(edit1.Text);
    end;end.
      

  6.   

    这是指通过局域网得某台计算机时间,在2000,NT下可以如果是MSSQL同意楼上的,
      

  7.   

    最简单的方法:
    Query1.SQL.Clear;
    Query1.SQL.Add('select getdate()')
    Query1.SQL.Open;
      

  8.   

    注意不同的数据库系统所用的取时间SQL语句是不一样的