加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – 当功效集很大时,RODBC会丢失datetime的时刻值

发布时间:2021-01-22 09:27:51 所属栏目:编程 来源:网络整理
导读:以是这很稀疏.假如功效集足够大,RODBC好像会删除DateTime SQL列的时刻部门. (查询是针对SQL Server 2012计较机运行的,是的,当我在SQL Server端运行它们时,无论返回几多行,它们城市天生沟通且正确的功效.) 譬喻,以下事变美满: myconn - odbcConnect(dsnName,u

以是这很稀疏.假如功效集足够大,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.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读