gpt4 book ai didi

mysql - R - 使用 ""将日期/时间变量推送到 SQL 查询中

转载 作者:行者123 更新时间:2023-11-30 00:06:36 24 4
gpt4 key购买 nike

我正在尝试将动态变量插入 R 中的 SQL 查询中,以便查询在 24 小时内递增 24 次,并将每个结果集写入 csv。不幸的是我收到了这个错误:

Error in mysqlExecStatement(conn, statement, ...) : 
RS-DBI driver: (could not run statement: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set @d2 = 2014-06-01 01:00:00 ;

我尝试使用 as.character 强制我的日期/时间,认为我的日期/时间变量将作为“xx-xx-xxxx xx:xx:xx”传递,但不幸的是,每次我运行该函数时,它都会删除引号和错误查询。有没有某种方法可以将对象传递到 R 中的 sql 查询中,该对象可以被视为 MySQL 中的日期/时间?

相关代码如下:

timeseq <- timeSequence(from = "2014-06-01", to ="2014-06-02", by = "hour")
for (i in 1:length(timeseq)){
if(i<length(timeseq)){
i2 <- i+1
}

date1 <- timeseq[i,]
date2 <- timeseq[i2,]
date1 <- as.character(date1)
date2 <- as.character(date2)

sqlcmd <- paste("set @d1 = ", date1, ";
set @d2 = ",date2,";

select
...")

test <- dbGetQuery(MySQLcon, sqlcmd)

最佳答案

我自己想出了这个办法,但首先是引用了 Konvas 的建议。单独放置单个刻度线是行不通的,因为 R 只是将我的变量名称作为查询中的字符串读取。相反,我必须输入“'”date1”'”才能使其正常工作。

我还必须在语句顶部完全删除我定义的变量,R 没有这些。幸运的是,这是一个简单的查询,我并不真正需要定义的变量。我的最终代码如下所示:

timeseq <- timeSequence(from = "2014-06-01", to ="2014-06-02", by = "hour")
for (i in 1:length(timeseq)){
if(i<length(timeseq)){
i2 <- i+1
}

date1 <- timeseq[i,]
date2 <- timeseq[i2,]
date1 <- as.character(date1)
date2 <- as.character(date2)

sqlcmd <- paste("

select
round(gps_data.latitude,2) latitude,
round(gps_data.longitude,2) longitude,
count(gps_data.id) n
from
gps_data,
pims,
fleets
where
fleets.id = pims.fleet_id and
fleets.id = 3 and
gps_data.pim_id = pims.id and
gps_data.created_at between '",date1,"'and '",date2,"'
group by 1,2")

test <- dbGetQuery(MySQLcon, sqlcmd)
write.csv(filename=date1,x=date1)

关于mysql - R - 使用 ""将日期/时间变量推送到 SQL 查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24492384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com