0

我在 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值放在查询中的哪个位置?

4

2 回答 2

2

假设这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 …
于 2019-03-11T16:15:11.637 回答
1

使用以下命令转换您的角色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

于 2019-03-11T16:14:01.070 回答