Oracle no resultan de la comparación de la fecha

votos
0

He ejecutar esta consulta simple y devolver ningún resultado

enterselect * from record where recorddate = TO_DATE(2018, 'YYYY'); 

He probado

Select to_date(recorddate,'YYYY') from record

Devuélvalo ora01830: termina la imagen formato de fecha antes de la conversión cadena de entrada entera

Aquí está mi estructura de la tabla:

create table record(
recordid varchar2(10),
singerid varchar2(10),
producedcountryid varchar2(10),
songid varchar2(10),
recorddate date,

constraint recordid_pk primary key (recordid),
constraint singerid2_fk foreign key (singerid) references singer(singerid),
constraint songid2_fk foreign key (songid) references song(songid)
);
Publicado el 27/11/2018 a las 16:53
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

DATEs en Oracle incluyen horas, minutos y segundos.
Así que a menos que haya alguna RECORDDATEs que son exactamente 00:00:00 en el mes dado, el predicado where recorddate = TO_DATE(2018, 'YYYY')no encontrará nada de igualar.

En la segunda consulta, to_date(recorddate,'YYYY')no es una sintaxis válida para el uso to_date. Por favor, vea to_date para más información.

Si usted está tratando de encontrar todos los RECORDs con RECORDDATEs en el año 2018, hay muchas maneras de hacerlo. A continuación se presentan un par de ejemplos.

CREATE TABLE RECORD (LOREM_IPSUM NUMBER, RECORDDATE DATE);
INSERT INTO RECORD VALUES (1,DATE '2017-05-05');
INSERT INTO RECORD VALUES (2,DATE '2018-05-05');
COMMIT;

SELECT * FROM RECORD;

  LOREM_IPSUM RECORDDATE
            1 05-MAY-17
            2 05-MAY-18

Entonces:

SELECT * FROM RECORD WHERE EXTRACT(YEAR FROM RECORDDATE) = 2018;

Resultado:

  LOREM_IPSUM RECORDDATE
            2 05-MAY-18

- O:

SELECT * FROM RECORD WHERE TO_CHAR(RECORDDATE,'YYYY') = '2018';

Resultado:

  LOREM_IPSUM RECORDDATE
            2 05-MAY-18

Si desea que los registros de un determinado mes del año +, se puede:

SELECT * FROM RECORD WHERE TRUNC(RECORDDATE,'MM') = DATE '2017-05-01';

Resultado:

  LOREM_IPSUM RECORDDATE
            1 05-MAY-17
Respondida el 27/11/2018 a las 17:15
fuente por usuario

votos
0

Obtendrá el conjunto de resultados que desea mediante la consulta del año parte de la columna de fecha recorddate.

select * from record 
where extract (year from recorddate) = 2018
Respondida el 27/11/2018 a las 17:16
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more