我注意到,自夏天时间更改以来,任何DATE(日期时间)Oracle列现在都被错误地转换(我在R中得到的时间比在Oracle DB中少一个小时).
从vignette的第12页(我很难理解)看起来像ROracle和R交换日期时间是自1-1-1970 UTC以来的秒数,并且R随后调整为当地时区.
这就是我的工作
drv <- dbDriver("Oracle");con <- dbConnect(drv,username = Login,password = Pwd,dbname = DB,prefetch=TRUE,bulk_read=1e6);test.query <- "SELECT * FROM MYtable WHERE ( A > to_date('2008-03-03 12:30:00','YYYY-MM-DD HH24:MI:SS') AND A < to_date('2008-03-03 12:40:00','YYYY-MM-DD HH24:MI:SS') AND [other stuff])"test <- dbGetquery(con,test.query);head(test[,c("A","B","C")])# A B C#1 2008-03-03 11:30:38 2008-03-02 23:00:00 2008-03-02 23:00:00 #HERE IT SHOulD BE +1 HOUR#2 2008-03-03 11:30:38 2008-03-02 23:00:00 2008-03-02 23:00:00#3 2008-03-03 11:30:41 2008-03-02 23:00:00 2008-03-02 23:00:00#4 2008-03-03 11:31:25 2008-03-02 23:00:00 2008-03-02 23:00:00#5 2008-03-03 11:31:25 2008-03-02 23:00:00 2008-03-02 23:00:00#6 2008-03-03 11:31:34 2008-03-02 23:00:00 2008-03-02 23:00:00class(test$A)[1] "POSIXct" "POSIXt" attributes(test$A)$class[1] "POSIXct" "POSIXt"
这是我的sessionInfo()
sessionInfo()R version 2.15.2 (2012-10-26)Platform: x86_64-w64-mingw32/x64 (64-bit)locale:[1] LC_ColLATE=french_France.1252 LC_CTYPE=french_France.1252 LC_MONETARY=french_France.1252[4] LC_NUMERIC=C LC_TIME=french_France.1252 attached base packages:[1] stats graphics Grdevices utils datasets methods base other attached packages:[1] data.table_1.8.9 ROracle_1.1-7 DBI_0.2-5 loaded via a namespace (and not attached):[1] tools_2.15.2
以下是我从管理员处获得的Oracle DB的信息
我该怎么做才能正确解决这个问题(不只是增加1小时,我将不得不在夏季结束时收回)
解决方法 这似乎在2014-11-20发布的 ROracle-1.1.12中得到修复.有关时区如何工作的信息,请参阅有关?dbReadtable的文档. 总结以上是内存溢出为你收集整理的通过R中的ROracle从Oracle查询中获取正确的日期时间全部内容,希望文章能够帮你解决通过R中的ROracle从Oracle查询中获取正确的日期时间所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)