valor una tabla rango obtener mayor maximo igual fechas fecha consultar consulta comparar sql oracle date format

una - sql fecha mayor o igual



Oracle SQL-DATE mayor que declaración (3)

¡tiene que usar la función To_Date () para convertir la cadena a la fecha! http://www.techonthenet.com/oracle/functions/to_date.php

Como dice el título, quiero encontrar una forma de verificar cuáles de mis conjuntos de datos son pasados ​​6 meses a partir de SYSDATE mediante consulta.

SELECT * FROM OrderArchive WHERE OrderDate <= ''31 Dec 2014'';

Intenté lo siguiente pero devuelve un error que indica que mi formato de fecha es incorrecto. Sin embargo, al insertar los datos, utilicé ese formato de fecha como solicitado / previsto y no tuve problemas.

Error en línea de comando: 10 columna: 25

Blockquote

Reporte de error -

Error de SQL: ORA-01861: literal no coincide con la cadena de formato 01861. 00000 - "literal no coincide con la cadena de formato"

* Causa: los literales en la entrada deben tener la misma longitud que los literales en la cadena de formato (a excepción de los espacios en blanco iniciales). Si el modificador "FX" se ha activado, el literal debe coincidir exactamente, sin espacios en blanco adicionales.

* Acción: corrija la cadena de formato para que coincida con el literal.


Como su cadena de consulta es un literal, y suponiendo que sus fechas se almacenen correctamente como DATE , debe usar literales de fecha :

SELECT * FROM OrderArchive WHERE OrderDate <= DATE ''2015-12-31''

Si desea usar TO_DATE (porque, por ejemplo, su valor de consulta no es un literal), le sugiero que configure explícitamente el parámetro NLS_DATE_LANGUAGE mientras usa los nombres abreviados de los meses de EE. UU. De esta forma, no se romperá en alguna instalación localizada de Oracle:

SELECT * FROM OrderArchive WHERE OrderDate <= to_date(''31 Dec 2014'', ''DD MON YYYY'', ''NLS_DATE_LANGUAGE = American'');


Necesita convertir la cadena a la fecha usando la función to_date()

SELECT * FROM OrderArchive WHERE OrderDate <= to_date(''31-Dec-2014'',''DD-MON-YYYY'');

O

SELECT * FROM OrderArchive WHERE OrderDate <= to_date(''31 Dec 2014'',''DD MON YYYY'');

O

SELECT * FROM OrderArchive WHERE OrderDate <= to_date(''2014-12-31'',''yyyy-MM-dd'');

Esto funcionará solo si OrderDate está almacenado en Date format . Si es Varchar , debe aplicar to_date() func en esa columna también como

SELECT * FROM OrderArchive WHERE to_date(OrderDate,''yyyy-Mm-dd'') <= to_date(''2014-12-31'',''yyyy-MM-dd'');