当我使用SYSDATETIME()
执行选择时,它会在过去两天给我一个日期!三个日期函数给我过去的日期,三个给我正确的日期。见下文。
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
这里有什么想法?
答案 0 :(得分:3)
SQL Server的Microsoft JDBC驱动程序不支持JRE 1.7。我在使用MSSQL服务器和JRE-1.7时遇到了同样的问题。使用Microsoft发布的热修复(为我工作)来解决您的问题。
请使用上述文章中的兼容性信息,并根据您的应用程序安装适当的修复程序。
希望这有助于:) 干杯
答案 1 :(得分:1)
查询中的前三个函数SYSDATETIME(),SYSDATETIMEOFFSET(),SYSUTCDATETIME()
获取运行SQL Server实例的计算机的日期和时间。
最后三个CURRENT_TIMESTAMP,GETDATE(),GETUTCDATE()
采取日期&来自运行SQL Server实例的计算机操作系统的时间。
答案 2 :(得分:0)
我们遇到了同样的问题,并且能够通过从Java 1.7 SDK回退到Java 1.6来修复它(但不是_30版本,它有问题)。
答案 3 :(得分:0)
我们解决这个问题的方法是切换到sqljdbc4-4.0.jar。