通过R中的ROracle从Oracle查询中获取正确的日期时间
发布时间:2021-03-05 12:24:10 所属栏目:百科 来源:网络整理
导读:我在R中使用 ROracle来访问Oracle数据库. 我注意到,自夏天时间更改以来,任何DATE(日期时间)Oracle列现在都被错误地转换(我在R中得到的时间比在Oracle DB中少一个小时). 从vignette的第12页(我很难理解)看起来像ROracle和R交换日期时间是自1-1-1970 UTC以来
我在R中使用 ROracle来访问Oracle数据库. 我注意到,自夏天时间更改以来,任何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:00 class(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的文档.(编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |