9

私のマシンでは、sqldf は POSIXct を localtime (私は CST、GMT -0600 にいます) から GMT/UTC に変更します。これは予想される動作ですか?R または sqldf がこれを行うのを止めることはできますか? これが私のコードです:

> library('sqldf')
> 
> before <- data.frame(ct_sys = Sys.time())
> before
               ct_sys
1 2012-03-01 12:57:58
> after <- sqldf('select * from before')
> after
               ct_sys
1 2012-03-01 18:57:58
> 
4

1 に答える 1

3

これはsqldfのタイムゾーンのバグのようです。sqldfバージョン0.4-6.2で修正されるはずです(まだCRANにはありませんが、次のように試すことができます)。

library(sqldf)
source("http://sqldf.googlecode.com/svn/trunk/R/sqldf.R")
before <- data.frame(ct_sys = Sys.time()); before
after <- sqldf('select * from before'); after

これを行わなくてもsqldf("select * from before", method = "raw")機能しますが、数値列(POSIXctに変換できます)が返され、他の列にも影響を与える可能性があります。の使用例を次に示しmethod = "raw"ます。どちらの場合も、次のようになることに注意してください1330661786.181

> library(sqldf)
>
> before <- data.frame(ct_sys = Sys.time()); dput(before)
structure(list(ct_sys = structure(1330661786.181, class = c("POSIXct", 
"POSIXt"))), .Names = "ct_sys", row.names = c(NA, -1L), class = "data.frame")
>
> after <- sqldf('select * from before', method = "raw"); dput(after)
structure(list(ct_sys = 1330661786.181), .Names = "ct_sys", row.names = 1L, class = "data.frame")

編集:使用例を追加method = "raw"

于 2012-03-02T01:19:01.127 に答える