sql – 当结果集很大时,RODBC会丢失datetime的时间值
|
所以这很奇怪.如果结果集足够大,RODBC似乎会删除DateTime SQL列的时间部分. (查询是针对SQL Server 2012计算机运行的,是的,当我在SQL Server端运行它们时,无论返回多少行,它们都会生成相同且正确的结果.) 例如,以下工作完美: myconn <- odbcConnect(dsnName,uid,pwd) results <- sqlQuery(myconn,"SELECT TOP 100 MyID,MyDateTimeColumn from MyTable ORDER BY MyDateTimeColumn DESC") close(myconn) 在R中,以下按预期工作: > results$MyDateTimeColumn[3] [1] "2013-07-01 00:01:22 PDT" 这是一个有效的POSIXct日期时间.但是,当返回介于10,000到100,000行之间时,突然时间部分消失: myconn <- odbcConnect(dsnName,pwd) bigResults <- sqlQuery(myconn,"SELECT TOP 100000 MyID,MyDateTimeColumn from MyTable ORDER BY MyDateTimeColumn DESC") close(myconn) (相同的代码,只返回更多的行;注意:完全相同的行现在已经丢失了它的时间组件),R响应: > bigResults$MyDateTimeColumn[3] [1] "2013-07-01 PDT" 请注意,现在缺少时间(这不是一个不同的行;它与前一行完全相同),如下所示: >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 显然,解决方法是增量查询 – 附加或导出到CSV和导入到R,但这看起来很奇怪.有没有见过这样的人? 配置:我使用的是最新版本的RODBC(1.3-10),可以复制在Windows x64上运行的R安装和在Mac OS X 10.9(Mavericks)上运行的R安装的行为. 编辑#2根据请求添加dput()输出以比较对象: > 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),tzone = "")
看起来底层数据实际上是由于查询返回的行数而发生变化,这是完全奇怪的. 解决方法sqlQuery()有一个名为as.is的选项.将其设置为TRUE将拉出所有内容,例如Microsoft SQL Management Studio.(编辑:开发网_郴州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Nero技巧:隐藏与恢复刻录数据的方法
- Windows系统屡成病毒攻击目标 同业坐收渔利
- 花费 0.052asp站长网 www.aspzz.cn 秒(0.150 MB/秒)
- sql-server – 多语句TVF与内联TVF性能
- sql – 如何将具有公共列(A,B)和(A,C)的2个查询转换为一个(
- IBM称有小集团打击Linux 微软与SCO是同党
- 在ASP.NET 2.0中操作数据之四十五:DataList和Repeater里的
- sql-server – Transact-SQL查询中字符串前的N前缀
- 网页设计中文本输入框的一些参数说明
- sql-server – 外键是否会导致死锁并阻碍READ COMMITTED SN

浙公网安备 33038102330466号