3

テスト目的で、2 つの異なる GUI (RStudio と SquirreLSQL) を使用して、同じデータベースから同じテーブルをクエリしています。

SquirreLSQL コンソールのクエリは次のようになります。

select count(distinct idstr) from fact_table where date::date='2014-10-30' and (w>0 or x>0 or y>0)

RStudio には、次のコードがあります。

library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv,"databaseconnectionstring",user ="usr",password ="pwd",dbname = "db") 
res <- dbSendQuery(con, "select count(distinct idstr) from fact_table where date::date='2014-10-30' and (w>0 or x>0 or y>0)")

SquirreLSQL で実行されたクエリは、RStudio で実行されたクエリのほぼ 2 倍の行を返します。まったく同じクエリが異なる値を返す原因は何ですか? 表と内容は変わりません。

4

1 に答える 1

0

Jakub の回答のおかげで、GUI が異なるタイムゾーンにあることに気付きました。これを修正するために、SquirreLSQL で次の SQL 行を実行して、正しいタイムゾーンを見つけました。

SELECT  current_setting('TIMEZONE')

「America/New_York」が返されたので、R で次の行を実行して、同じタイムゾーンで 2 つのプログラムを取得しました。

dbGetQuery(con, "SET TIMEZONE TO 'America/New_York'") 
于 2014-11-06T21:46:25.240 に答える