我正在使用R中的ROracle来访问Oracle数据库。
我注意到自夏令时更改以来,任何
从vignette第12页(我几乎看不懂)可以看出,ROracle和R将日期时间作为自1970年1月1日UTC以来的秒数进行交换,并且R随后会调整本地时区。
这是我的操作步骤。
这是我的
以下是我从管理员那里获得的有关Oracle数据库的信息。
我应该怎样才能正确地解决这个问题(不只是添加1小时,然后在夏末时需要把它减回去)?
我注意到自夏令时更改以来,任何
DATE
(日期时间)Oracle列都被错误转换了(在R中,我得到比Oracle DB少一个小时的结果)。从vignette第12页(我几乎看不懂)可以看出,ROracle和R将日期时间作为自1970年1月1日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数据库的信息。
![Oracle DB](https://istack.dev59.com/u8Lyo.webp)