通过VB.net选择GetDate(),然后通过SSMS选择GetDate()

sar*_*old 1 sql vb.net ssms sql-server-2000

当我使用以下代码时:

Dim cmd As New OdbcCommand("SELECT GETDATE()", oConn)
retVal = cmd.ExecuteScalar()
Run Code Online (Sandbox Code Playgroud)

结果输出是:

8/1/2013 10:10:39 AM
Run Code Online (Sandbox Code Playgroud)

当我直接在Management Studio中运行完全相同的查询时,我得到:

2013-08-01 10:10:39.317
Run Code Online (Sandbox Code Playgroud)

当我检查我的计算机设置与它们匹配的SQL Server设置时.

任何人都知道我需要做些什么以确保它匹配?

具体来说,我在谈论日期格式的差异.

Aar*_*and 5

如果希望日期输出具有特定的字符串格式,则可以使用CONVERT()样式编号.例如:

SELECT CONVERT(CHAR(20), GETDATE(), 22),
       CONVERT(CHAR(23), GETDATE(), 21);
Run Code Online (Sandbox Code Playgroud)

结果:

--------------------    -----------------------
08/01/13 10:53:54 AM    2013-08-01 10:53:54.943
Run Code Online (Sandbox Code Playgroud)

但是,如果您将日期用于直接显示以外的其他内容,则仅在显示时应用该格式.对于所有其他的目的,应该保持一个DateTime类型,应该不会被转换为字符串.

至于实际时间价值的差异,目前尚不清楚你在说什么问题,但我怀疑你只是将这些查询分开了半小时.如果那些是在同一时间或大约同一时间运行,看起来服务器快半小时 - 也许它在不同的时区或者可能只是很多漂移或有人不打扰使用时间服务.您的应用程序永远不应该使用客户端的时间/时区,特别是如果它是分布式的 - 始终使用服务器上的时间.