Попытка вставить параметр в SQL Oracle - PullRequest
0 голосов
/ 11 марта 2019

У меня следующий запрос на Oracle SQL

SELECT LE.LLAMADA_ID,
       TO_CHAR(LE.FECHA_HORA_1, 'DD-MM-YY HH24:MI:SS') FECHA, 
       TO_CHAR(LE.FECHA_HORA_2, 'DD-MM-YY HH24:MI:SS') FECHA_2, 
       LE.TECNICO_1 ID,
       T.DESCR Nombre, 
       COLA_1, 
       COLA_2
FROM QU_LLAMADA_EVENTO LE, 
     INVT_TECNICOS T
WHERE LE.FECHA_HORA_1 BETWEEN '16-jan-2019' AND '17-jan-2019' --CAMBIAR LAS FECHAS, SE PONEN UN DIA ANTES Y UN DIA DESPUES, Si quiero el 11 de enero pongo el 11 de enero el dia antes y el 12 de enero como dia despues 
AND LE.TECNICO_1 = T.ID
ORDER BY TECNICO_1, FECHA_HORA_1 ASC;

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

ORA-01858: se ha encontrado un carácter no numérico donde se esperaba uno numérico
01858. 00000 -  "a non-numeric character was found where a numeric was expected"
*Cause:    The input data to be converted using a date format model was
           incorrect.  The input data did not contain a number where a number was
           required by the format model.
*Action:   Fix the input data or the date format model to make sure the
           elements match in number and type.  Then retry the operation.

Я знаю, что проблема сTo_Date значение, где я должен поставить значение To_Date в моем запросе?

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

Предполагая, что FECHA_HORA_1 является столбцом даты (или метки времени), вы можете использовать to_date таким образом, например:

LE.FECHA_HORA_1 BETWEEN to_date ('16-01-2019', 'dd-mm-yyyy') and …

Здесь вы можете написать дату в формате, который вам нравится,вам просто нужно отредактировать маску формата соответственно.Обратите внимание, что я избегал писать месяц как 'jan', потому что он основан на языке вашей системы.

Более простым способом, без вызова функции или форматов, может быть способ ANSI:

LE.FECHA_HORA_1 BETWEEN date '2019-01-16' and …
1 голос
/ 11 марта 2019

Преобразуйте свои символы в дату с помощью TO_DATE('17-jan-2019','dd-mon-yyyy'):

SELECT LE.LLAMADA_ID,
       TO_CHAR(LE.FECHA_HORA_1, 'DD-MM-YY HH24:MI:SS') FECHA,
       TO_CHAR(LE.FECHA_HORA_2, 'DD-MM-YY HH24:MI:SS') FECHA_2,
       LE.TECNICO_1 ID,
       T.DESCR Nombre,
       COLA_1,
       COLA_2
  FROM QU_LLAMADA_EVENTO LE
  JOIN INVT_TECNICOS T
    ON LE.TECNICO_1 = T.ID
 WHERE LE.FECHA_HORA_1 BETWEEN to_date('16-jan-2019', 'dd-mon-yyyy') 
   AND to_date('17-jan-2019', 'dd-mon-yyyy')
 ORDER BY TECNICO_1, FECHA_HORA_1 ASC;

Вот различные форматы для TO_DATE ():
https://www.techonthenet.com/oracle/functions/to_date.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...