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'');