Oracle SQL-Data maior que Declaração

Como diz o título, eu quero encontrar uma maneira de verificar qual dos meus conjuntos de dados são passados 6 meses do SYSDATE via consulta.

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

eu tentei o seguinte, mas ele retorna um erro dizendo que o meu formato de data está errado. No entanto, inserir os dados que eu usei esse formato de data como solicitado / pretendido e não teve problemas.

erro na linha de comando : 10 coluna: 25

Blockquote

Relatório de erro -

erro de SQL: ORA-01861: o literal não corresponde formatar o texto 01861. 00000 - "literal não corresponde ao formato string"

* Causa: os literais na entrada devem ter o mesmo comprimento que os literais em o texto do formato (com a excepção do espaço em branco inicial). Se a O modificador " FX " foi activado, o literal deve corresponder exactamente, sem espaço extra.

* Action: Correct the format string to match the literal.

Author: user3521826, 2015-05-31

3 answers

Dado que o seu texto de pesquisa é literal, e assumindo que as suas datas estão devidamente armazenadas como DATE, deverá usar os literais de datas:

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

Se quiser utilizar TO_DATE (como, por exemplo, seu valor de consulta não é literal), sugiro que você defina explicitamente o parâmetro NLS_ DATE_ language Como você está usando os nomes dos meses abreviados. Assim, não vai quebrar numa instalação localizada Do Oráculo.

SELECT * FROM OrderArchive
WHERE OrderDate <= to_date('31 Dec 2014', 'DD MON YYYY',
                           'NLS_DATE_LANGUAGE = American');
 36
Author: Sylvain Leroux, 2015-05-31 09:30:46

É necessário converter o texto até à data usando a função to_date()

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

Ou

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

Ou

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

Isto só funcionará se OrderDate for armazenado em Date format. Se for Varchar deve aplicar to_date() func nessa coluna também como

 SELECT * FROM OrderArchive
    WHERE to_date(OrderDate,'yyyy-Mm-dd') <= to_date('2014-12-31','yyyy-MM-dd');
 22
Author: Sachu, 2018-05-08 12:18:24

Você tem que usar a função To_ date() para converter o texto para a data ! http://www.techonthenet.com/oracle/functions/to_date.php

 1
Author: kamokaze, 2015-05-31 09:22:24