当从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中看到的正确结果对齐)。时间也准确 - 只是日期似乎错了。
答案 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是唯一遇到此问题的人。