2014-11-06 4 views
3

В целях тестирования я запрашиваю одну и ту же таблицу из одной базы данных, используя два разных графических интерфейса (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

+1

вы пытались запросить базу данных для текущего времени? Кажется, единственное место, где он может отличаться, это часовой пояс. –

+0

Вот и все, @JakubKania! Спасибо! – zebrainatree

ответ

0

Благодаря ответу Якуба я понял, что графические интерфейсы находятся в разных часовых поясах. Чтобы исправить это, я запустил следующую строку SQL в SquirreLSQL, чтобы найти правильный часовой пояс:

SELECT current_setting('TIMEZONE') 

Он вернулся «America/New_York», так что я побежал следующую строку в R, чтобы получить две программы в же часовой пояс:

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