运行从Rstudio到SQL Server的查询时,我在结果集中看到的日期相差了两天:
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver",
"/etc/sqljdbc_3.0/enu/sqljdbc4.jar")
conn <- dbConnect(drv, "jdbc:sqlserver://blah", "blah", "shhh....")
#then build a query and run it
sqlText <- paste("Use Logs;
SELECT * FROM Log_2011_07_26 with (NOLOCK)
WHERE CreationDate >= '2011-07-26 13:44:44' AND
CreationDate <= '2011-07-26 14:04:44' AND
Server = 'ny-web02'", sep="")
queryResults <- dbGetQuery(conn, sqlText)
View(queryResults)然而,结果都是以2011-07-24为日期。正如sp_WhoIsActive在服务器上看到的那样,正在运行正确的查询。除了datetime字段(换句话说,所有字段都与我在SQL Server Management studio中看到的正确结果一致)之外,结果就是它们看起来应该是什么样子。时间也是准确的--只是日期看起来是错的。
发布于 2011-07-27 03:51:50
数据库列是一个datetime2列,显然链上的某些东西是不理解的。
如果我选择它作为CAST(CreationDate AS DATETIME),我会得到正确的日期。所以我猜解决方案是要么像这样选择它,要么改变表格(除非我听到更好的)。
发布于 2011-10-05 23:53:44
我们在使用Date类型时也遇到了同样的问题。
我们有4个环境设置。Dev、SIT、UAT和Prod。我们在生产中使用SQL Server驱动程序是因为JTDS驱动程序没有的自动故障转移功能,但JTDS在所有其他环境中都没有。我们开始看到驱动程序之间的其他细微差别,因此我们将所有其他环境(Dev、SIT和UAT)迁移到MS版本的驱动程序。
由于某些原因,SIT环境显示日期为两天,而所有环境都不显示日期。
我们有太多的更改会触发一个完整的回归测试周期,无法使用Datetime作为数据类型。在所有条件都相同的情况下,导致这种情况的环境中肯定存在细微的差异。有没有其他人遇到过这个问题并解决了它?
注意:我检查了我的日期位置设置,它们似乎在所有环境中都是相同的。
我们还在SIT数据库中指定了Dev,并且Date类型正确。然后,我们尝试将SIT指向Dev数据库,但得出的日期不正确。
据我们所知,所有环境都是彼此的镜像环境,SIT是唯一遇到这个问题的环境。
https://stackoverflow.com/questions/6834626
复制相似问题