相同的查询,不同的结果。可能的原因?

时间:2014-11-06 17:40:19

标签: r postgresql rstudio squirrel-sql rpostgresql

出于测试目的,我使用两个不同的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中完成的行的两倍。什么可能导致相同的确切查询返回不同的值?表格和内容不会改变。

1 个答案:

答案 0 :(得分:0)

感谢Jakub的回复,我意识到GUI处于不同的时区。为了解决这个问题,我在SquirreLSQL中运行了以下SQL行来查找正确的时区:

SELECT  current_setting('TIMEZONE')

它返回&#34; America / New_York&#34;,所以我在R中运行以下行以获得同一时区的两个程序:

dbGetQuery(con, "SET TIMEZONE TO 'America/New_York'")