function GetDBSysDate:String;
begin
  with gmtcdm do
  begin
    Qry.Close;
    Qry.SQL.Clear;
    Qry.SQL.Add('select getdate() as sysdate');
    Qry.Open;
    Result:=Qry.FieldByName('sysdate').AsString;
    Qry.Close;
  end;
end;
上面这个函数是我用来从sql server中取回系统日期用的。以现在2012年5月10日 16点22分40秒为例,返回的结果是2012-05-10 16:22:40我要的也是这个结果。但是,在客户的其中一台电脑上,就会返回2012-05-10 下午 4:22:40查看其控制面板中的“区域和语言选项”,定义的日期格式和别人是一样的,再说了,用getdate()从sql server中取回日期和客户端本地日期格式有关吗?
问题出在哪里?

解决方案 »

  1.   

    Try this
    Select CONVERT(varchar(100), GETDATE(), 20) as sysdate
      

  2.   

    日期格式化函数:
    Select CONVERT(varchar(100), GETDBTE(), 0): 05 16 2006 10:57BM 
      Select CONVERT(varchar(100), GETDBTE(), 1): 05/16/06 
      Select CONVERT(varchar(100), GETDBTE(), 2): 06.05.16 
      Select CONVERT(varchar(100), GETDBTE(), 3): 16/05/06 
      Select CONVERT(varchar(100), GETDBTE(), 4): 16.05.06 
      Select CONVERT(varchar(100), GETDBTE(), 5): 16-05-06 
      Select CONVERT(varchar(100), GETDBTE(), 6): 16 05 06 
      Select CONVERT(varchar(100), GETDBTE(), 7): 05 16, 06 
      Select CONVERT(varchar(100), GETDBTE(), 8 ): 10:57:46 
      Select CONVERT(varchar(100), GETDBTE(), 9): 05 16 2006 10:57:46:827BM 
      Select CONVERT(varchar(100), GETDBTE(), 10): 05-16-06 
      Select CONVERT(varchar(100), GETDBTE(), 11): 06/05/16 
      Select CONVERT(varchar(100), GETDBTE(), 12): 060516 
      Select CONVERT(varchar(100), GETDBTE(), 13): 16 05 2006 10:57:46:937 
      Select CONVERT(varchar(100), GETDBTE(), 14): 10:57:46:967 
      Select CONVERT(varchar(100), GETDBTE(), 20): 2006-05-16 10:57:47 
      Select CONVERT(varchar(100), GETDBTE(), 21): 2006-05-16 10:57:47.157 
      Select CONVERT(varchar(100), GETDBTE(), 22): 05/16/06 10:57:47 BM 
      Select CONVERT(varchar(100), GETDBTE(), 23): 2006-05-16 
      Select CONVERT(varchar(100), GETDBTE(), 24): 10:57:47 
      Select CONVERT(varchar(100), GETDBTE(), 25): 2006-05-16 10:57:47.250 
      Select CONVERT(varchar(100), GETDBTE(), 100): 05 16 2006 10:57BM 
      Select CONVERT(varchar(100), GETDBTE(), 101): 05/16/2006 
      Select CONVERT(varchar(100), GETDBTE(), 102): 2006.05.16 
      Select CONVERT(varchar(100), GETDBTE(), 103): 16/05/2006 
      Select CONVERT(varchar(100), GETDBTE(), 104): 16.05.2006 
      Select CONVERT(varchar(100), GETDBTE(), 105): 16-05-2006 
      Select CONVERT(varchar(100), GETDBTE(), 106): 16 05 2006 
      Select CONVERT(varchar(100), GETDBTE(), 107): 05 16, 2006 
      Select CONVERT(varchar(100), GETDBTE(), 108): 10:57:49 
      Select CONVERT(varchar(100), GETDBTE(), 109): 05 16 2006 10:57:49:437BM 
      Select CONVERT(varchar(100), GETDBTE(), 110): 05-16-2006 
      Select CONVERT(varchar(100), GETDBTE(), 111): 2006/05/16 
      Select CONVERT(varchar(100), GETDBTE(), 112): 20060516 
      Select CONVERT(varchar(100), GETDBTE(), 113): 16 05 2006 10:57:49:513 
      Select CONVERT(varchar(100), GETDBTE(), 114): 10:57:49:547 
      Select CONVERT(varchar(100), GETDBTE(), 120): 2006-05-16 10:57:49 
      Select CONVERT(varchar(100), GETDBTE(), 121): 2006-05-16 10:57:49.700 
      Select CONVERT(varchar(100), GETDBTE(), 126): 2006-05-16T10:57:49.827 
      Select CONVERT(varchar(100), GETDBTE(), 130): 18 ???? ?????? 1427 10:57:49:907BM 
      Select CONVERT(varchar(100), GETDBTE(), 131): 18/04/1427 10:57:49:920BM 
      经常使用: 
      Select CONVERT(varchar(100), GETDBTE(), 8 ): 10:57:46 
      Select CONVERT(varchar(100), GETDBTE(), 24): 10:57:47 
      Select CONVERT(varchar(100), GETDBTE(), 108): 10:57:49 
      Select CONVERT(varchar(100), GETDBTE(), 12): 060516 
      Select CONVERT(varchar(100), GETDBTE(), 23): 2006-05-16
    建议楼主使用convert函数,固定日期的格式后再输出,保证所以机器上的格式一致。