RPostgreSQLでdatetime処理に問題があります。具体的には、POSIXctオブジェクトに関するもので、UTCのタイムゾーンはpostgresデータベースへのアップロード時に夏時間に自動的に調整されます。簡単な例:RpostgreSQLのタイムゾーンとPOSIXctの処理
library(RPostgreSQL)
example = data.frame(date=as.POSIXct('2016-08-14 15:50:00',tz='UTC'))
con = dbConnect(dbDriver("PostgreSQL"),
dbname="mydb",
host="localhost",
port="5432",
user="me",
password="password")
dbWriteTable(con,name=c('myschema','mytable'),example,overwrite=T)
example2 = dbReadTable(con,name=c('myschema','mytable'))
dbDisconnect(con)
example2 # 2016-08-14 14:50:00
この場合、時間は15:50としてエクスポートされますが、午前14時50分ようにリードバック、英国夏時間の夏時間が適用されていることを示唆しています。私はシステム設定をUTCに調整しようとしました.RのタイムゾーンをUTCに設定しました。Sys.setenv(TZ='UTC')
を使用し、UTCにUTCにタイムゾーンを設定しました.SET timezone TO 'UTC'
を使用しています。
誰かがプロセスのどこで変換が起こりそうで、どこからdbWriteTableがタイムゾーンを取っているのか知っていますか?調整が必要な他の設定に関する提案はありますか?