ROracle с переменной даты и проблема с функцией Months_Between - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь запустить SQL для базы данных Oracle 12C, используя ROracle в RStudio, и мне нужно использовать переменную даты.

Если я запускаю это: -

         Sys.setenv(ORA_SDTZ = "GMT")
         Sys.setenv(TZ = "GMT")
         strdate <- Sys.Date() - 20

         dat <- dbGetQuery(conn
                        ,"SELECT add_months(:1,-5) from Dual" 
                        ,data = data.frame(strdate) )

Я получаю ожидаемые результаты, т.е. за 20 дней до сегодняшнего дня

Однако, если я запущу это: -

         Sys.setenv(ORA_SDTZ = "GMT")
         Sys.setenv(TZ = "GMT")
         strdate <- Sys.Date() - 20

         dat <- dbGetQuery(conn
                        ,"SELECT add_months(:1,-5) 
                        ,FLOOR(MONTHS_BETWEEN(sysdate, :1) ) from Dual"
                        ,data = data.frame(strdate) )

Я получаю следующую ошибку: -

      Error in .oci.GetQuery(conn, statement, data = data, prefetch = 
      prefetch,  : bind data does not match bind specification

Я тоже пробовал: -

        dat <- dbGetQuery(conn, "SELECT add_months( TO_DATE (TO_CHAR (:1, 'DD/MM/YYYY'), 'DD/MM/YYYY'),-5) 
              ,FLOOR(MONTHS_BETWEEN(sysdate,  TO_DATE (TO_CHAR (:1, 'DD/MM/YYYY'), 'DD/MM/YYYY')) ) from Dual", data = data.frame(strdate) )

но это тоже не сработало.

Любая помощь приветствуется.

...