我在R內使用ROracle訪問Oracle數據庫。通過Oracle中的ROracle獲取正確的日期時間R
我注意到,可能自夏令時改變以來,任何DATE
(日期時間)Oracle列現在都被錯誤地轉換(我在R中得到的時間比Oracle數據庫少一小時)。
從vignette(我bearly瞭解)第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數據庫的信息,我從管理得到
我能做正確的解決這個問題(不只是增加1小時,我將不得不在夏季結束時收回)
我沒有解決方案之前,但我很好奇可能的答案,因爲我遇到了完全相同的問題(可能是R 3.0.0,OS X和全球一半的時區)。 – joran
你的問題與ROracle有關嗎? – statquant
是的;完全一樣的東西,日期時間是一個小時。使用RODBC連接到相同的數據庫不會顯示問題。 – joran