RODBC 返回 0 行,即使有很多行
RODBC returning 0 rows even though there are many rows
我在 SQL 服务器上有这个数据库。当我 运行 以下查询时:
SELECT * FROM myTable WHERE myDateField <= '2014-12-31'
我得到 51618 行。
但是当我 运行 来自 R 的完全相同的查询时,使用 RODBC,我得到“<0 行>(或 0 长度 row.names)”。
现在假设我更改日期:
SELECT * FROM myTable WHERE myDateField <= '2010-01-01'
然后我在 SQL 服务器上直接和在 R (!?) 上得到完全相同的结果。
我找到了这个 answer,所以我尝试将 believeNRows = FALSE
和 rows_at_time = 1
添加到我的 odbcDriverConnect
语句中。但这并没有改变任何东西。
那么,这里可能发生了什么?我已经处理了将近 24 小时了,但我完全没有想法。
客户端:CentOS 7.1.1503,R 3.2.1,RODBC 1.3-12
服务器:Windows服务器 2012,SQL服务器 2014
您可以做的第一件事是逐步更改工作日期,直到您发现导致查询失败的模式。也许(对于未来的读者)问题是 SQL 服务器需要标准以外的格式。如果是这种情况,那么对第一个月的第一天的查询将(仅巧合)return 正确的结果。您可以使用 set dateformat 让 SQL 服务器接受您需要的格式。
我在 SQL 服务器上有这个数据库。当我 运行 以下查询时:
SELECT * FROM myTable WHERE myDateField <= '2014-12-31'
我得到 51618 行。
但是当我 运行 来自 R 的完全相同的查询时,使用 RODBC,我得到“<0 行>(或 0 长度 row.names)”。
现在假设我更改日期:
SELECT * FROM myTable WHERE myDateField <= '2010-01-01'
然后我在 SQL 服务器上直接和在 R (!?) 上得到完全相同的结果。
我找到了这个 answer,所以我尝试将 believeNRows = FALSE
和 rows_at_time = 1
添加到我的 odbcDriverConnect
语句中。但这并没有改变任何东西。
那么,这里可能发生了什么?我已经处理了将近 24 小时了,但我完全没有想法。
客户端:CentOS 7.1.1503,R 3.2.1,RODBC 1.3-12
服务器:Windows服务器 2012,SQL服务器 2014
您可以做的第一件事是逐步更改工作日期,直到您发现导致查询失败的模式。也许(对于未来的读者)问题是 SQL 服务器需要标准以外的格式。如果是这种情况,那么对第一个月的第一天的查询将(仅巧合)return 正确的结果。您可以使用 set dateformat 让 SQL 服务器接受您需要的格式。