循环遍历日期以在R中的数据库中按天获取所有表

时间:2014-03-31 18:24:26

标签: r sql

我需要在R中构造一个必须在引号中包含日期的mysql查询。如何在粘贴功能中使用它并获得正确的引号?似乎引号的方式必须与paste一起使用,我不能让R opbject在引号内。

例如:

# set the beginning and ending dates for the year 2013
date <-  as.Date('2013/01/01',format = "%Y/%m/%d")
date2 <-  as.Date('2013/12/31',format = "%Y/%m/%d")

# create a sequence of every day in this year
s <- seq(date,to = date2, by='days') 

# loop through all 365 days in the year to get a query for each day
for (i in 1:365) {
query <- paste0('select ID, Name, Account, FROM Table WHERE Date = ',s[[i]]) 
}

这会产生以下查询(其中一天):

 "select ID, Name, Account, FROM Table WHERE Date = 2013-01-01"

但是mySql要求日期是这样的(日期周围有引号)

 "select ID, Name, Account, FROM Table WHERE Date = '2013-01-01'"

如何让粘贴函数在R对象周围放置引号?

1 个答案:

答案 0 :(得分:2)

如果用双引号表示字符串start和stop,则可以在字符串中使用单引号。

paste0("select ID, Name, Account, FROM Table WHERE Date = '", s[[i]], "'")

应该工作得很好。

作为旁注,为了在字符串中间插入内容,我发现sprintf()paste更具可读性。此外,您的s对象只是日期的向量,因此您不需要双括号(尽管它们也不会受到伤害)。

sprintf("select ID, Name, Account, FROM Table WHERE Date = '%s'", s[i])