读书人

为什么select getdate() as sysdate返

发布时间: 2012-08-08 14:32:45 作者: rapoo

为什么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
  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函数,固定日期的格式后再输出,保证所以机器上的格式一致。
[解决办法]
1、数据库的排序规则一样吗
2、当前用户的默认语言一样吗?(安全--登录名--属性 可以看到)

读书人网 >SQL Server

热点推荐