【问题标题】:r shiny date range input to sql queryr闪亮的日期范围输入到sql查询
【发布时间】:2015-05-10 04:39:00
【问题描述】:

我在下面有一个 sql 查询,它工作得很好。

 Select * from dbo.Employee where StartDate between '08/01/2014' and '08/31/2014' order by StartDate 

我正在修改此查询,使其从闪亮的 UI(日期范围)获取日期输入。

sqlQuery(myconn, paste("Select * from dbo.Employee where StartTime between", "'as.character(input$daterange[1])'", "and", "'as.character(input$daterange[2])'", "order by StartTime"))

我收到一个错误

[1,] "22007 241 [Microsoft][SQL Server Native Client 10.0][SQL Server]Conversion failed when converting date and/or time from character string."
[,2] "[RODBC] ERROR: Could not SQLExecDirect ' Select * from.....                                                 Where StartDate between 'as.character(input$daterange[1])' and 'as.character(input$daterange[2])' order by StartDate '"

不确定如何修复此查询,以便从闪亮的 UI 中获取日期输入,需要帮助。

【问题讨论】:

  • 每当我遇到这样的问题时,我都会尝试分段处理(比如首先执行粘贴语句并确保它是正确的)。正如我所看到的,您的粘贴语句不正确,您在 as.character 位周围有引号,所以您只是直接粘贴,而不是实际值。

标签: mysql r shiny shiny-server


【解决方案1】:

我使用sub 函数来做到这一点,只需使用如下正则表达式:

my_date1 <- "08/01/2014"
my_date2 <- "08/31/2014"

my_query <- 'Select * from dbo.Employee where StartDate between DATE1 and DATE2 order by StartDate'
my_query <- sub("DATE1",my_date1,my_query);my_query <- sub("DATE2",my_date2,my_query)
# the result of your query is below
noquote(my_query)

# if you want the quotes for dates leave them there
my_query <- 'Select * from dbo.Employee where StartDate between "DATE1" and "DATE2" order by StartDate'
my_query <- sub("DATE1",my_date1,my_query);my_query <- sub("DATE2",my_date2,my_query)
# the result of your query is below
noquote(my_query)


# Now sub the inputs into those variables like so
my_query <- 'Select * from dbo.Employee where StartDate between DATE1 and DATE2 order by StartDate'
my_query <- sub("DATE1",input$daterange[1],my_query);my_query <- sub("DATE2",input$daterange[2],my_query)
noquote(my_query)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 2018-08-29
    • 2019-05-13
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    相关资源
    最近更新 更多