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