RJDBC日期混乱

时间:2011-07-26 18:20:03

标签: sql r

当从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中看到的正确结果对齐)。时间也准确 - 只是日期似乎错了。

2 个答案:

答案 0 :(得分:0)

数据库列是datetime2列,显然链中的某些内容无法理解。

如果我选择CAST(CreationDate AS DATETIME),我会得到正确的日期。所以我想解决方案就是选择它或更改表格(除非我听得更清楚)。

答案 1 :(得分:0)

我们遇到了与Date类型相同的问题。

我们有4个环境设置。 Dev,SIT,UAT和Prod。我们在生产中使用SQL Server驱动程序是因为JTDS驱动程序没有自动故障转移功能,而是所有其他环境中的JTDS。我们开始看到驱动程序之间的其他细微差别,因此我们将所有其他环境(Dev,SIT和UAT)迁移到驱动程序的MS版本。

出于某种原因,SIT环境会将日期显示两天,而这些日期都没有。

我们有太多的更改会触发完整的回归测试周期,将Datetime用作数据类型。在所有条件相同的情况下,造成这种情况的环境必然存在细微差别。有没有其他人遇到这个并修复它?

注意:我检查了我的日期位置设置,它们似乎在所有环境中都是相同的。

我们还在SIT数据库中指出Dev,并且Date类型正确显示。然后我们尝试在开发人员数据库中指出SIT,日期错误。

据我们所知,所有环境都是彼此的镜像环境,SIT是唯一遇到此问题的人。