日期:2014-05-18  浏览次数:20777 次

为什么select getdate() as sysdate返回的日期,在不同电脑上格式不同?
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中取回日期和客户端本地日期格式有关吗?


问题出在哪里?

------解决方案--------------------
字符集都不一样 当然的。
------解决方案--------------------
日期格式化函数:
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 
  Sele