gpt4 book ai didi

R中的SQL查询将两个日期作为参数传递

转载 作者:行者123 更新时间:2023-12-01 22:12:51 26 4
gpt4 key购买 nike

我有一个 begin.dateend.date,我想从这两个日期之间的 db2 表中检索行。

当我通过对这些值进行硬编码来运行查询时,它工作正常。

Data   =   dbGetQuery(conn, paste(
"
Select * From tableA
WHERE DATE(Administered_Date) between '01-01-2011' AND '01-31-2011'
"))

但是当我将这两个日期作为参数传递而不是对它们进行硬编码时,我会遇到语法错误。到目前为止,这是我的尝试。如果有人能告诉我哪里出错了,那将会很有帮助。提前致谢。

 library(RJDBC)
i <- '0'
begin.date = as.Date("2011-01-01") + as.numeric(i) + as.numeric('0')
end.date = as.Date("2011-01-01") + as.numeric(i) + as.numeric('31')

Data = dbGetQuery(conn, paste(
"
Select * From tableA
WHERE DATE(Administered_Date) between '", begin.date,"'" AND '", end.date, "'"
"))

最佳答案

按照 RJDBC page 上的讨论简单地使用参数化查询对于准备好的陈述。除了与 SQL 注入(inject)隔离之外,您还可以从代码 (SQL) 中抽象数据 (R),而无需困惑的字符串连接和引号括起来,以增强可维护性和可读性:

SQLstring <- "SELECT * FROM tableA WHERE DATE(Administered_Date) BETWEEN ? AND ?"

Data <- dbGetQuery(conn, SQLstring, begin.date, end.date)

可能需要将日期强制转换为 as.character() 以避免被读取为整数

关于R中的SQL查询将两个日期作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46867401/

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