如何根据 R Mysql DB 中的时间戳删除 table?
How to delete table based on timestamps in R Mysql DB?
这是我的时间戳
q1<-Sys.time()-777000
q1
#"2019-09-12 08:39:27 GMT"
这就是我正在尝试做的,我遇到了错误
Sys.time()
dbSendQuery(conn,"delete from anomaly_hourly_temp where report_time>q1")
Sys.time()
dbSendQuery(conn,"delete from anomaly_hourly_temp where report_time>q1")
Error in .local(conn, statement, ...) :
could not run statement: Unknown column 'q1' in 'where clause'
也试过这个,虽然它没有显示任何错误,但它不会根据时间戳删除任何行
Sys.time()
dbSendQuery(conn,"delete from anomaly_hourly_temp where report_time>'q1'")
Sys.time()
如果我明确指定 timestamp(q1
) ,它会按照下面给出的方式工作
dbSendQuery(conn,"delete from anomaly_hourly_temp where report_time>'2019-09-22 11:42:51'")
使用 paste0
将查询粘贴在一起。
DBI::dbSendQuery(conn,
paste0("delete from anomaly_hourly_temp where report_time > '", q1, "'"))
类似于paste0
,我们也可以使用paste
/str_c
/glue
/sprintf
或其他有助于将查询粘贴在一起的函数.
现在您尝试将 R 变量插入到 SQL 语句中,但是 SQL 读取文字 q1 而不是其基础值。虽然将 R 变量连接到 SQL 字符串是一种解决方案,但它更安全、更高效、避免引号,并且行业最佳实践是 运行 在后续步骤中使用带有参数绑定的准备好的语句进行参数化:
# PREPARED STATEMENT
sql <- "delete from anomaly_hourly_temp where report_time > ?")
# BIND PARAM AND EXECUTE ACTION
dbSendQuery(conn, sql, list(q))
这是我的时间戳
q1<-Sys.time()-777000
q1
#"2019-09-12 08:39:27 GMT"
这就是我正在尝试做的,我遇到了错误
Sys.time()
dbSendQuery(conn,"delete from anomaly_hourly_temp where report_time>q1")
Sys.time()
dbSendQuery(conn,"delete from anomaly_hourly_temp where report_time>q1")
Error in .local(conn, statement, ...) : could not run statement: Unknown column 'q1' in 'where clause'
也试过这个,虽然它没有显示任何错误,但它不会根据时间戳删除任何行
Sys.time()
dbSendQuery(conn,"delete from anomaly_hourly_temp where report_time>'q1'")
Sys.time()
如果我明确指定 timestamp(q1
) ,它会按照下面给出的方式工作
dbSendQuery(conn,"delete from anomaly_hourly_temp where report_time>'2019-09-22 11:42:51'")
使用 paste0
将查询粘贴在一起。
DBI::dbSendQuery(conn,
paste0("delete from anomaly_hourly_temp where report_time > '", q1, "'"))
类似于paste0
,我们也可以使用paste
/str_c
/glue
/sprintf
或其他有助于将查询粘贴在一起的函数.
现在您尝试将 R 变量插入到 SQL 语句中,但是 SQL 读取文字 q1 而不是其基础值。虽然将 R 变量连接到 SQL 字符串是一种解决方案,但它更安全、更高效、避免引号,并且行业最佳实践是 运行 在后续步骤中使用带有参数绑定的准备好的语句进行参数化:
# PREPARED STATEMENT
sql <- "delete from anomaly_hourly_temp where report_time > ?")
# BIND PARAM AND EXECUTE ACTION
dbSendQuery(conn, sql, list(q))