library("RODBC")

ch<-odbcConnect("WYF",uid="reportread",pwd="reportread")

sqlTables(ch,tableType="TABLE",schema="dbo",tableName="guideSaleList")

<br />
GSL<-sqlQuery(ch,paste("SELECT * FROM guideSaleList WHERE ChangeDate BETWEEN '2014-08-01 00:00:00' AND '2014-08-21 00:00:00'"),na.strings="NA")

warning:closing unused RODBC handle 4


数据虽然还是被存在了GSL的dataframe下,但是发现把其中的时间变量"ChangeDate"变成因子后,只有8月1号到18号的,有大神知道是为什么?
</p>

不是大神。仅从你给出的代码判断,我认为最有可能是query的结果中没有ChangeDate为8月19号以后的数据。

6 天 后

回复 第2楼 的 Torenable:事实上是有的,这个问题就只有那天出现了,现在调用就完全没有问题

4 天 后

回复 第3楼 的 wyfhdl:

请问你在其他的SQL editor中看过query的结果吗?如果editor中的结果没问题,就说明是R处理的问题。

建议你使用sqlQuery(stringsAsFactors = FALSE),然后自己处理接受到的数据。

在生成data frame时,R将所有的character value视为nominal data,然后转换为factor类型(如果不设定stringsAsFactors = FALSE),所以factor的结果总不尽如人意。