2015-03-09 3 views
2

У меня есть sql-запрос ниже, который работает отлично.r блестящий диапазон дат ввода для sql-запроса

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

Я изменяю этот запрос так, чтобы он вносил дату ввода из блестящего интерфейса (daterange).

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, нуждается в помощи.

+4

Всякий раз, когда у меня есть проблемы, как это, я пытаюсь сделать что-то кусочно (как первый выполнить оператор вставки и убедитесь, что верно). Поскольку я вижу это, ваш оператор вставки неверен, у вас есть кавычки вокруг бита as.character, поэтому вы просто вставляете это напрямую, а не фактическое значение. – goodtimeslim

ответ

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) 
Смежные вопросы