这可能是一种方法:
dates <- seq(as.Date("2010-01-01"), by = "month", length.out = 13)
for (i in 1:(length(dates) -1)) {
sqlQuery(channel, sprintf("select * from db where date between %s and %s;\n", dates[i],dates[i+1]), believeNRows=FALSE)
}
注意几点:
首先,必须根据您的需要编辑日期顺序,其次;查询一直到日期的倒数第二个元素(否则你会得到一个NA(所以在未来一个月)和第三个;如果你想这样做,这不会打印你发送的查询,更改(或添加)以下命令:
cat(sprintf("select * from db where date between %s and %s;\n", dates[i],dates[i+1]))
在这种情况下,此输出(将sqlQuery 切换为cat 会产生以下结果(注意简化循环仅适用于SQL 语句,而不是完整的sqlQuery 调用):
dates <- seq(as.Date("2010-01-01"), by = "month", length.out = 13)
for (i in 1:(length(dates) -1)) {
cat(sprintf("select * from db where date between %s and %s;\n", dates[i],dates[i+1]))
}
#select * from db where date between 2010-01-01 and 2010-02-01;
#select * from db where date between 2010-02-01 and 2010-03-01;
#select * from db where date between 2010-03-01 and 2010-04-01;
#select * from db where date between 2010-04-01 and 2010-05-01;
#select * from db where date between 2010-05-01 and 2010-06-01;
#select * from db where date between 2010-06-01 and 2010-07-01;
#select * from db where date between 2010-07-01 and 2010-08-01;
#select * from db where date between 2010-08-01 and 2010-09-01;
#select * from db where date between 2010-09-01 and 2010-10-01;
#select * from db where date between 2010-10-01 and 2010-11-01;
#select * from db where date between 2010-11-01 and 2010-12-01;
#select * from db where date between 2010-12-01 and 2011-01-01;