2017-02-21 19 views
0

Я использую R в приложении Shiny. Я получаю данные из базы данных Oracle. У меня проблемы, когда я пытаюсь получить год столбца DATE. Я думаю, что это проблема Oracle, а не проблема R или Shiny.Я не могу использовать YEAR в выбранном Oracle с R

Я пытаюсь построить количество трески в год.

Вот R файловые коды:

ConexionBBDDOracle.R (Database Conection файл)

library(RODBC) 

conexion <- function(){ 
    con <- odbcConnect("ORAC11.ORACLE11G", uid="***", pwd="***", rows_at_time = 500, believeNRows=FALSE) 
    return(con) 
} 
cerrarConexion <- function(con){ 
    close(con) 
} 
nuevaTabla <- function(con,tabla,nombre){ 
    sqlSave(con, tabla, "nombre") 
} 

ejecutaQuery <- function (con,query){ 
    sqlQuery(con, query) 
} 

pruebasQuerys.R (Файл, чтобы сделать мои тесты)

con <- conexion() 
#pruebas <- ejecutaQuery(con,"select COCODIGO NUMCOD, YEAR(COFECHA) ANIO from L2113T00 where COCODIGO = '2012120313571375343'") 
pruebas <- ejecutaQuery(con,"select COCODIGO NUMCOD, YEAR(TO_DATE(COFECHA ,'yyyy-mm-dd')) ANIO from L2113T00 where COCODIGO = '2012120313571375343'") 

#where COFECHA > TO_DATE('1997/01/01','yyyy-mm-dd') and COFECHA < TO_DATE('2017/01/01','yyyy.mm-dd') group by COFECHA 
#pruebas$ANIO <- year(as.Date(pruebas$ANIO, '%m/%d/%Y')) 

#plot(pruebas$ANIO, pruebas$NUMCOD,  main="Numero de consultas por año",  xlab="FECHA (AÑO)",  ylab="Nº CONSULTAS") 


cerrarConexion(con) 

Я пробовал разные решения, но они не работали. Этот код вернуть эту ошибку Oracle:

42S22 904 [Oracle][ODBC][Ora]ORA-00904: "YEAR": identificador no válido

+0

Oracle не имеет 'функцию YEAR'. –

ответ

2

Вы можете попробовать использовать

extract(year from TO_DATE(COFECHA ,'yyyy-mm-dd')) 
+0

Я не знаю, что произойдет, но это вернет день, когда я делаю 'select COFECHA' это возвращение, например: _2012-11-28_, и когда я использую ваше предложение, он возвращает _28_ –

+0

Хорошо, я пытаюсь выполнить' TO_DATE' без даты формат, и теперь он работает. Спасибо –

+0

@ AndoniAlda Какой тип 'COFECHA'? Это * уже * тип даты? Если это так, нет необходимости разбирать его –