Sql server 2008 SQL Server 2008 SYSDATETIME返回错误的日期

Sql server 2008 SQL Server 2008 SYSDATETIME返回错误的日期,sql-server-2008,datetime,jdbc,Sql Server 2008,Datetime,Jdbc,当我使用SYSDATETIME()执行select时,它会给我过去两天的日期!其中三个日期函数为我提供过去的日期,三个函数为我提供正确的日期。见下文 SELECT SYSDATETIME(), SYSDATETIMEOFFSET(), SYSUTCDATETIME(), CURRENT_TIMESTAMP, GETDATE(), GETUTCDATE() ==================================

当我使用
SYSDATETIME()
执行select时,它会给我过去两天的日期!其中三个日期函数为我提供过去的日期,三个函数为我提供正确的日期。见下文

SELECT SYSDATETIME(),
       SYSDATETIMEOFFSET(),
       SYSUTCDATETIME(),
       CURRENT_TIMESTAMP,
       GETDATE(),
       GETUTCDATE()  
==================================
2011-10-17 10:41:00.4521484
2011-10-17 10:41:00.4521484 -04:00
2011-10-17 14:41:00.4521484
2011-10-19 10:41:00.447
2011-10-19 10:41:00.447
2011-10-19 14:41:00.45
我正在使用MS SQLServer 2008和JDBC 3.0驱动程序:

DatabaseProductName: MICROSOFT SQL SERVER
DriverName: Microsoft SQL Server JDBC Driver 3.0
getDatabaseProductName: Microsoft SQL Server
getDatabaseProductVersion: 10.50.1600
getDriverVersion: 3.0.1301.101
getDriverMajorVersion: 3
getDriverMinorVersion: 0
getDriverName: Microsoft SQL Server JDBC Driver 3.0

知道这里发生了什么吗?

查询中的前三个函数
SYSDATETIME()、SYSDATETIMEOFFSET()、SYSUTCDATETIME()
获取运行SQL Server实例的计算机的日期和时间


最后三个
CURRENT\u TIMESTAMP,GETDATE(),GETUTCDATE()
从运行SQL Server实例的计算机的操作系统中获取日期和时间。

我们遇到了同样的问题,并且能够通过从Java 1.7 SDK退回到Java 1.6(但不是有问题的_30版本)来修复它.

我们解决此问题的方法是切换到sqljdbc4-4.0.jar。

用于SQL Server的Microsoft JDBC驱动程序不支持JRE 1.7。在使用MSSQL服务器和JRE-1.7时,我也遇到了同样的问题。使用Microsoft发布的热修复程序(为我工作)解决您的问题

修补程序现在可用。

请使用上述文章中的兼容性信息,并根据您的应用程序安装相应的修复程序

希望这有帮助:)
Cheers

SYSDATETIME应该显示数据库服务器上的日期/时间。如果您的数据库服务器位于另一台服务器上,则它的日期/时间可能不正确。@ArthurFrankel-但不一致的结果都来自同一个查询。hmm。我想这真的没有意义,因为SYSDATETIME和GETDATE应该从服务器获取值。可能是司机的问题?当您直接在服务器上运行查询(没有驱动程序)时,它是否工作?这两个语句之间是否存在差异?你从哪里得到这个?