为什么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、当前用户的默认语言一样吗?(安全--登录名--属性 可以看到)