2014-11-06 115 views
3

出於測試目的,我使用兩個不同的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中完成的一個。什麼可能導致相同的確切查詢返回不同的值?表格和內容不會改變。

+0

我認爲這事做的日期,​​因爲我只用變量測試它,和它的工作 – zebrainatree 2014-11-06 20:54:53

+1

您是否嘗試過在數據庫中查詢當前的時間?它似乎唯一不同的地方是時區。 – 2014-11-06 20:57:17

+0

就是這樣,@JakubKania!謝謝! – zebrainatree 2014-11-06 21:01:23

回答

0

感謝Jakub的回覆,我意識到圖形用戶界面在不同的時區。爲了解決這個問題,我跑SQL的SquirreLSQL下面一行找到正確的時區:

SELECT current_setting('TIMEZONE') 

它返回「美國/紐約」,所以後來我跑R下面的命令行來獲得在兩個方案同一時區:

dbGetQuery(con, "SET TIMEZONE TO 'America/New_York'") 
相關問題