sql - RODBC loses time values of datetime when result set is large -


so very strange. rodbc seems drop time portion of datetime sql columns if result set large enough. (the queries running against sql server 2012 machine, and, yes, when run them on sql server side produce identical , proper results, regardless of how many rows returned.)

for example, following works perfectly:

myconn <- odbcconnect(dsnname, uid, pwd) results <- sqlquery(myconn, "select top 100 myid, mydatetimecolumn mytable order mydatetimecolumn desc") close(myconn) 

in r, following works expected:

> results$mydatetimecolumn[3] [1] "2013-07-01 00:01:22 pdt" 

which valid posixct date time. however, when somewhere between 10,000 , 100,000 rows returned, time portion disappears:

myconn <- odbcconnect(dsnname, uid, pwd) bigresults <- sqlquery(myconn, "select top 100000 myid, mydatetimecolumn mytable order mydatetimecolumn desc") close(myconn) 

(same code, larger number of rows returned; note: exact same row has lost time component), r responds:

> bigresults$mydatetimecolumn[3] [1] "2013-07-01 pdt" 

note time missing (this not different row; it's exact same row previous), following shows:

>strptime(results$triggertime[3], "%y-%m-%d %h:%m:%s") [1] "2013-07-01 00:01:22"  >strptime(bigresults$triggertime[3], "%y-%m-%d %h:%m:%s") [1] na 

obviously work-around either incremental query-with-append or export-to-csv-and-import-to-r, seems odd. ever seen this?

config: i'm using latest version of rodbc (1.3-10) , can duplicate behavior on both r installation running on windows x64 , r installation running on mac os x 10.9 (mavericks).

edit #2 adding output of dput() compare objects, per request:

> dput(results[1:10,]$mydatetimecolumn) structure(c(1396909903.347, 1396909894.587, 1396909430.903, 1396907996.9, 1396907590.02, 1396906077.887, 1396906071.99, 1396905537.36, 1396905531.413, 1396905231.787), class = c("posixct", "posixt"), tzone = "")  > dput(bigresults[1:10,]$mydatetimecolumn) structure(c(1396854000, 1396854000, 1396854000, 1396854000, 1396854000, 1396854000, 1396854000, 1396854000, 1396854000, 1396854000), class = c("posixct", "posixt"), tzone = "") 

it appear underlying data changing result of number of rows returned query, downright strange.

sqlquery() has option called as.is. setting true pull seen in example microsoft sql management studio.


Comments

Popular posts from this blog

PHPMotion implementation - URL based videos (Hosted on separate location) -

javascript - Using Windows Media Player as video fallback for video tag -

c# - Unity IoC Lifetime per HttpRequest for UserStore -